test命令进行条件判断
1 利用test命令的测试功能
当要检测系统上面某些文件或者是相关的属性时,利用test命令来工作真是好用。
示例1:检测/dmtsai是否存在
还可以用以下测试标志来判断
示例2 :用户输入文件名,来书写脚本判断
1)这个文件是否存在,若不存在则给予一个“Filename dose not exist”的信息,并中断程序;
2)若这个文件存在,则判断它是一个文件或目录,结果输出“Filename is regular file ”或“Filename is directory”;
3)判断下,执行者的身份对这个文件或目录所拥有的权限,并输出权限数据。
执行这个脚本后,它会依据你输入的文件名来进行检查,先看是否存在,再看文件或目录类型,最后判断权限。但是你必须注意,因为root在很多权限的限制上面都是无效的,所以使用root执行这个脚本,常常会发现与ls -l观察到的结果并不相同。所以,建议使用一般用户来执行这脚本试试看,不过你必须要使用root的身份先将这个脚本转移给用户就是,不然一般的用户无法进入/root的目录。
2 利用判断符号[]
示例1:想要知道$HOME这个变量是否为空
使用中括号注意,包括通配符与正则表达式,所以如果要在bash的语法当中使用中括号作为shell判断式,注意中括号的两端需要有空格符来分隔
使用注意事项:
- 在中括号[]内的每个组件都需要有空格键来分隔;
- 在中括号内的变量,最好都以双引号括号起来;
- 在中括号内的常量,最好都以单或双引号括号起来。
示例2:用中括号判断
输入:vim sh06.sh
3 shell script 的默认变量($0,$1…)
如果想要重新启动系统注册表文件的功能。
特殊变量可以在script内使用来调用这些参数
- $#:代表后接的参数“个数”;
- $0:代表文件名;
- $@:代表“$1”、“$2”、“$3”、“$4”之意,每个变量是独立的(用双引号括起来);
- $*:代表“ “$1c$2c$3c$4” ”,其中 c为分隔字符,默认为空格键,所以本例中代表" “$1 $2 $3 $4” "之意。
示例1:假设我要执行一个可以携带参数的script,执行该脚本后屏幕会显示如下的数据:
1)程序文件名;
2)共有几个参数;
3)若参数的个数小于2则告知用户参数数量太少;
4)全部的参数内容;
5)第一个参数;
6)第二个参数。
执行结果
示例2:造成参数变量号码偏移
输入:vim sh08.sh
执行结果:
shift知识点:看执行结果可以知道 shift会移动变量,shift后面可以接数字,代表拿掉最前面的几个参数的意思
学习资料:鸟哥的Linux私房菜