bash中常用的条件测试有三种:
测试方法:
[ expression ] 命令测试法
[[ expression]] 关键字测试法
test expression
整数测试:
-gt
-le
-ne
-eq
-ge
-lt
例:
INT1=63
INT2=77
[ $INT1 -eq $INT2 ]
[[ $INT1 -eq $NET2 ]]
test $INT1 -eq $NET2
文件测试:
-e FILE:�y�文件是否存在
-d FILE:测试指定路径是否为目录
例:写一个脚本,给定一个文件,如果是普通文件,就显示之;如果是一个目录,亦显示之;否则,显示此为无法识别文件。
#!/bin/bash
#
file=/etc/passwd \\定义变量file
if [ ! -e $file ];then \\如果文件不存在
echo "no such file." \\就显示文件不存在
exit 2 \\结束脚本
fi
if [ -f $file ];then \\如果文件存在就判断是不是普通文件
echo "common file." \\是就显示文件为普通文件
elif [ -d $file ];then \\否则就测试是否为目录
echo "Directory." \\是就显示是目录
else \\否则
echo "unknow" \\就显示文法识别
fi
定义脚本退出状态码
提前结束脚本:exit
exit #
如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码既为脚本的退出状态码:
测试脚本是否有语法错误:
bash -n +脚本名
逐条显示执行:bash -x +脚本名
bash变量的类型:
本地变量(局部变量)
环境变量
位置变量:$1,$2,.... 引用位置参数 shift:轮替
./filetest,sh /etc/fatab /etc/inittab
$1:/etc/fatab
$2:/etc/inittab
例:能接受一个参数(文件路径),判定:此参数如果是一个存在的文件,就显示“OK”,否则就显示“NO such file.”
#!/bin/bash
#
if [ -e $1 ]; then
echo "OK."
else
echo "NO such file."
fi
例:写一个脚本,给脚本传递两个参数,显示两个参数的和,成积。
#!/bin/bash
if [ $# -lt 2 ];then
echo "Usage:file3.sh ARG1 ARG2"
fi
echo "the sum is $[$1+$2]."
echo "the product is $[$1*$2]"
特殊变量
$?:上一条命令的退出状态码
$#:参数的个数
$*:参数列表
$@:参数列表