Linux学习笔记(5)——shell编程(2)

1.shell参数传递

用$n来获取参数,n代表第几个参数。

实例:向脚本传递3个参数,并分别输出,其中$0 是执行的文件名。

Linux学习笔记(5)——shell编程(2)_第1张图片

执行脚本,输出结果:

2.shell基本运算符

Shell支持的运算符:

算数运算符、关系运算符、布尔运算符、字符串运算符、文件测试运算符

expr是一款表达式计算工具,使用它能完成表达式的求值操作。

例:两数相加(注意:使用的数反引号``,不是单引号’’)

Linux学习笔记(5)——shell编程(2)_第2张图片

执行脚本,输出结果:

//显然sum2的结果和预期不同,此处是想引出注意事项

两点注意:

(1)表达式和运算符之间要有空格。

(2)完整的表达式要被``包含

说明:

常用运算符中 * 乘号,前面必须加反斜杠\ 才能实现乘法运算。

条件表达式要放在方括号之间并且要有空格,例:[$a==$a]是错误写法。

必须写成[ $a == $b ] ,相等返回true,不等返回false

关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

  •   -eq  检测两个数是否相等,相等返回true。

例 [ $a -eq $b ]

  •   -ne  检测两个数是否相等,不相等返回true.

例 [ $a -ne $b ]

  •   -gt   检测左边的数是否大于右边的,是则返回true  (相当于>)
  •   -lt    检测左边的数是否小于右边,是则返回true  (相当于<)
  •   -ge   检测左边的数是否大于等于右边的,是则返回true  (相当于>=)
  •   -le    检测左边的数是否小于等于右边,是则返回true  (相当于<=)

布尔运算符

  •   !    非运算,表达式为true则返回false,    例[ ! false ] 返回 true
  •   -o   或运算,表达式为true则返回true
  •   -a   与运算,表达式为true则返回true

逻辑运算符

  •   &&   逻辑上的and
  •   ||    逻辑上的or

字符串运算符

假定变量 a为“abc”,变量b为“efg”

  •   =    检测两个字符串是否相等,相等返回true
  •   !=   检测两个字符串是否相等,不相等返回true
  •   -z   检测字符串的长度是否为0,为0返回true 

例:[ -z $a ] 返回false

  •   -n   检测字符串长度是否为0,不为0返回true
  •   Str  检测字符串是否为空,不为空返回true

例 [ $a ] 返回 true

文件测试运算符

文件测试运算符用于检测Unix文件的各种属性。

  •   -b file   检测文件是否是设备文件,是则返回true
  •   -c file   检测文件是否是字符设备文件,是则返回true
  •   -d file   检测文件是否为普通文件(既不是目录,也不是设备文件)如果是,则返回true
  •   -g file   检测文件是否设置了SGID位,是则返回true
  •   -k file   检测文件是否设置了粘着位
  •   -r file   检测文件是否为可读,是则返回true
  •   -w file  检测文件是否为可写,是则返回true
  •   -x file  检测文件是否为可执行,是则返回true
  •   -s file  检测文件是否为空(文件大小是否为0),不为空则返回true
  •   -e file  检测文件(包括目录文件)是否存在,是则返回true

3. echo命令

echo指令用于字符串的输出。

echo除了普通的输出以外,还可以显示命令执行结果 如 echo ` date ` 反引号内可放函数名,执行函数,显示输出执行结果。另外还能显示结果定向至文件 如

echo “ It is a test” > myfile 即将echo要显示输出的内容,放置到myfile文件中

4.printf命令

printf也是用于输出的命令,模仿了C程序库里的printf()程序。语法如下:

printf   format-string  [arguments…..]

format-string:为格式控制字符串

arguments:为参数列表

实例:

Printf  “Hello,Shell\n”

输出为 Hello,Shell

5.test命令

test命令用于检查某个条件是否成立,可以进行数值、字符和文件三方面的测试。

实例:检查两个字符串是否相等(一定一定要在运算符前后都用空格隔开!)

Linux学习笔记(5)——shell编程(2)_第3张图片

执行脚本,输出结果:

 

你可能感兴趣的:(Linux学习笔记)