控制语句应用 - pingdongyi/blog-2 GitHub Wiki
程序退出状态可以用$?获取,也可以手动指定退出状态,如exit n。退出状态为0表示成功退出,1表示退出失败。
if condition1
then
command1
elif condition2
then
command2
else
command3
fi
#! /bin/bash
##数字测试
if [ "10" -lt "12" ]
then
echo "yes,10<12"
fi
##根据命令执行结果判断,错误信息自定义输出,不显示系统错误,故>/dev/null 2>&1
if cp aaa aaa.bak >/dev/null 2>&1
then
echo "cp success"
else
echo "cp fail"
fi
##测试文件权限
###这里变量赋值=号两边不能有空格
filename="test.php"
if [ -w $filename ]
then
echo "the file can write"
fi
##测试传递到脚本中的参数
if [ $# -lt 3 ]
then
echo "the params's num < 3"
#exit 1
fi
##用-t来测试脚本是否为终端交互模式还是后台运行
if [ -t ]
then
echo "we are interactive with a terminal"
else
echo "run in backend"
fi
##用LOGNAME检测运行脚本的用户
if [ "$LOGNAME" != "root" ]
then
echo "not root ,is $LOGNAME"
else
echo "$LOGNAME"
fi
##直接用:表示空操作
if [ "`ls -a $1`" = "" ]
then
echo "empty directory"
else :
fi
case var in
opt1)
command1
......
;;
opt2)
command2
......
;;
opt3)
command3
......
;;
...
;;
esac
### 示例
```bash
OPT=$1
case $OPT in
start|reload)
echo "this is start proc"
;;
stop)
echo "this is stop proc"
;;
help)
echo "this is help proc"
;;
*)
echo "usage : `basename $0` [start|reload|stop|help]"
;;
esac
for item in list
do
for item2 in list2
do
command
...
done
done
##循环变量列表
for var in 1 2 3 4 5
do
echo $var
done
##循环查看脚本参数$@或$*
for param in "$@"
do
echo "this param is $param"
done
##循环当前目录文件
for ff in `ls`
do
echo $ff
done
直到条件满足停止执行
until condition
do
command
......
done
##until
num="10"
until [ $num -lt 1 ]
do
echo $num
num=`expr $num - 1`
done
当满足条件时执行语句
while condition
do
command
...
done
##while循环读输入
while read film
do
echo "yes,input your lovely $film"
done
##忽略#号
while read line
do
case $line in
\#*)
;;
*)
echo $line
;;
esac
done
可以使用
break
和continue
退出或跳过循环