初步认识shell脚本语言

之前都接触的是编译型语言,突然接触shell脚本语言这种解释型语言,真是有很大的不适应感。我会逐步的记录下作为一只小菜鸟,在shell中遇到的问题和注意的地方。(具体语句和结构可以参考linux典藏大系的shell从入门到精通)

一、首先是这种解释性语言在“命令”和“赋值”之间的区别。

在命令操作符左右两端都要有“ ”空格相隔,而赋值操作符是没有空格的。这点很重要,不想gcc和g++这种编译器,会忽略空格,shell语言很依赖空格来进行区别。例如

给变量x赋值1-->x=1(没有分号),判断x是否等于1-->[ x = 1 ]。前一个赋值号‘=’两端是没有空格的。而判断符[  ]里面有空格隔开并且‘=’两边有空格隔开。

二、SHELL编程和C和C++习惯的改变

一些在C或者C++上的编程习惯,在SHELL上是必须改变的。比如之前说的空格的问题,我就非常愿意在C++上的=两边加上空格,但是在SHELL中一定要控制控制加控制。还有{}的使用,不管是if还是while,until,SHELL中这些程序块使用then、do、done等标识出来的,所以在编写SHELL脚本的时候,一定要克制克制加克制,其实写多了就好了。。。

三、各种$的应用

1、$( statement ):

a、一般来说,$()中的语句是可以执行的shell命令。就像` `(反引号不是''单引号啊,在键盘~的下面)

例如:echo "current dictionary is $(pwd)"结果会显示当前目录。

b、$()还会用来做数字运算,其实是$(())。$(())比expr好多了,不管松散还是紧凑都可以正确输出例如:

result=$((10+1))和result=$(( 10 + 1 ))都可以正确输出结果,当然类似的计算还可以用let、$[ ]。

2、${ }

这个命令是用来做变量替换的。一般$temp和${temp}是一致的,需要注意的是多个变量一起用的时候${ }来确定变量的界限

其他功能的例子:temp=/home/xcs/shell/CSDN.sh

${temp#*/}是去掉第一个/符号和它左面的字符:结果home/xcs/shell/CSDN.sh

${temp##*/}去掉最后一个/符号和它左面的字符:结果CSDN.sh

${temp%/*}去掉最后一个/符号和它后面的字符:结果/home/xcs/shell/CSDN.sh

${temp%%/*}去掉第一个/符号和它后面的字符:结果空

${temp:0:5}:提取最左边的 5 个字节:/home
${file:5:4}:从第 6 个字节开始右边的连续 5 个字节:/xcs

我们也可以对变量值里的字符串作替换:
${file/home/path}:将第一个 home 提换为 path:/path/xcs/shell/CSDN.sh
${file//home/path}:将全部 home 提换为 path:

最后${#temp}还可以测量变量的长度,echo "the length of temp is ${#temp}"回显为23

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值