首页 > 代码库 > shell脚本语言用法

shell脚本语言用法

shell程序运行:

1、./xx.sh。这样运行shell要求shell程序必须具有可执行权限。chmod a+x xx.sh来添加可执行权限。

2、source xx.sh。

3、bash xx.sh,bash是一个脚本程序解释器,本质上是一个可执行程序。这样执行相当于我们执行了bash程序,然后把xx.sh作为argv[1]传给他运行。

if的典型应用
判断文件是否存在。(-f),注意[]里面前后都有空格,不能省略。
判断目录是否存在 (-d)
判断字符串是否相等("str1" = "str2"),注意用一个等号而不是两个
判断数字是否相等(-eq)、大于(-gt)、小于(-lt)、大于等于(-ge)、小于等于(-le) 回忆一下在ARM裸机中讲述ARM汇编条件执行时,曾经用过这些条件判断的缩写。(eq就是equal,gt就是greater than,lt就是less than,ge就是greater or equal,le就是less or equal)
判断字符串是否为空(-z)注意-z判断时如果变量本身没定义也是不成立(也就是说-z认为没定义不等于为空)

case语句
(1)shell中的case语句和C语言中的switch case语句作用一样,格式略有差异
(2)shell中的case语句天生没有break,也不需要break,和C语言中的switch case不同。shell中的case默认就是匹配上哪个执行哪个,不会说执行完了还去执行后面的其他case(就好像shell中的case语言默认都带了break)。

shell程序本身也可以在调用时传参。$#表示调用该shell时传参的个数($#计数时只考虑真正的参数个数)。$0、$1、$2·····则依次表示传参的各个参数。

while循环中内嵌case语句时,case中的break是跳出外层的while循环的,不是用来跳出case语句的。

shell中的$# $1等内置变量的值不是不可变的,而是可以被改变,被shift指令改变。shift指令有点像C语言中的左移运算符,把我们给shell程序的传参左移了一个移出去了,原来的$2变成了新的$1,原来的$#少了1个。

shell脚本语言用法