一、bash中常用的条件测试有三种
1、整数测试:-gt -le -ne -eq -ge -lt;
2、文件测试:
-e FILE:测试文件是否存在,如:[ -e /etc/inittab ]
-f FILE:测试文件是否为普通文件;
-d FILE:测试指定路径是否为目录;
-r FILE:测试当前用户对指定文件是否有读取权限;
-w FILE:测试当前用户对指定文件是否有可写权限;
-x FILE:测试当前用户对指定文件是否有可执行权限,如:[ -x /etc/rc.d/rc.sysinit ];
如:测试一个指定的文件是否存在;
# nano filetest.sh
#!/bin/bash
#
FILENAME=/etc/inittab
if [ -e $FILENAME ];then
echo "OK."
else
echo "Not the such file."
fi
# bash filetest.sh
OK.
二、测试脚本是否有语法错误
1、bash -n 脚本:脚本测试;
2、bash -x 脚本:单步执行脚本测试;
三、自定义脚本退出状态码
1、exit:退出脚本;
2、exit num:指定退出码,一般不指定0,因为执行命令正确才为0;
3、如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本的退出状态码;
四、bash变量类型
1、本地变量(局部变量):作用域为当前shell进程;
2、环境变量:作用域为当前shell进程及其子shell进程;
3、位置变量:
a)$1,$2,...
如:./filetest.sh /etc/fstab /etc/inittab
$1:对应位置为./filetest.sh;
$2:对应位置为/etc/fstab;
b)shift:轮换参数(轮替);
c)shift n:轮替多个参数;
如:#nano shift.sh
#!/bin/bash
#
echo $1
shift
echo $1
shift
echo $1
#bash ./shift.sh 1 2 3 4
1
2
3
4、特殊变量
a)$?:上一条命令的退出状态码;
b)$#:参数的个数;
c)$*:参数列表;
d)$@:参数列表;
练习1,写一个脚本:
能接受一个参数(文件路径)
判断:此参数如果是一个存在的文件,就显示“OK”;否则就显示“No such file.”
参考答案:# nano filetest3.sh
#!/bin/bash
#
if [ $# -lt 1 ];then
echo "Usage:./filetest3.sh ARG1 [ARG2 ...] "
exit 7
fi
if [ -e $! ];then
echo "OK."
else
echo "No such file."
fi
# chmod +x ./filetest3.sh
# ./filetest3.sh /etc/fstab
OK.
# ./filetest3.sh /etc/fstavv
No such file.
练习2,写一个脚本:
给脚本传递两个参数(整数);显示此两者之和,之乘积;
参考答案:#nano cal.sh
#!/bin/bash
#
if [ $# -lt 2];then
echo "Least two ARG."
echo "The sum is:$[$1+$2]."
echo "The prod is:$[$1*$2]."
#bash cal.sh 6 9
The sum is:15.
The prod is:54. 。
本文出自 “Nick Liu的博文” 博客,请务必保留此出处http://zkhylt.blog.51cto.com/3638719/1395912