Bar*_*lom 1 bash shell if-statement sh
if [ "$1" == "on" ]; then
echo "Maintenance going on"
echo "<maintenance/>" > $MFILE
else if [ "$1" == "off" ]; then
echo "Maintenance going off"
rm $MFILE
else if [ "$1" == "status" ]; then
if [ -f $MFILE ]; then
echo "Maintenance is ON"
else
echo "Maintenance is OFF"
fi
else
echo "ERROR: Unknown command $1"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
如果我尝试运行此脚本,则会出现"意外的文件结束"错误.我怀疑是因为if/else/else if中出现了问题,但我发现谷歌难以理解语法的例子.这里有人知道吗?
你应该使用"elif",而不是"else if"
来自http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_02.html的文字
这是if语句的完整形式:
如果TEST-COMMANDS; 然后
CONSEQUENT-命令;
elif MORE-TEST-COMMANDS; 然后
MORE-CONSEQUENT-命令;
否则交替 - 后果 - 命令;
科幻
执行TEST-COMMANDS列表,如果其返回状态为零,则执行CONSEQUENT-COMMANDS列表.如果TEST-COMMANDS返回非零状态,则依次执行每个elif列表,如果其退出状态为零,则执行相应的MORE-CONSEQUENT-COMMANDS并且命令完成.如果else后跟一个ALTERNATE-CONSEQUENT-COMMANDS列表,并且最终if或elif子句中的最后一个命令具有非零退出状态,则执行ALTERNATE-CONSEQUENT-COMMANDS.返回状态是执行的最后一个命令的退出状态,如果没有条件测试为真,则返回零.
稍微偏离主题,但以下内容不会更具可读性:
case $1 in
on)
echo "Maintenance going on"
echo "<maintenance/>" > $MFILE
;;
off)
echo "Maintenance going off"
rm $MFILE
;;
status)
if [ -f $MFILE ]; then
echo "Maintenance is ON"
else
echo "Maintenance is OFF"
fi
;;
*)
echo "ERROR: Unknown command $1"
exit 1
;;
esac
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |