在shell中用善用||和&&可以简化shell的编写
1)op1||op2
这个是“或”操作,op1,op2分别表示:操作1,操作2
整个表达式从左至右,只要op1不为真,就继续op2,相当于
if ! [[ op1 ]];then op2 fi
2) op1&&op2
这个是“与”操作,op1,op2分别表示:操作1,操作2
整个表达式从左至右,只要op1为真,就继续op2,相当于
if [[ op1 ]];then op2 fi
所以,有时候用||和&&可以减少if else语句
比如如下一段
cd /var/backups || exit 0 for FILE in passwd group shadow gshadow; do test -f /etc/$FILE || continue cmp -s $FILE.bak /etc/$FILE && continue cp -p /etc/$FILE $FILE.bak && chmod 600 $FILE.bak done
这是从系统中定时任务中找到的一个定时备份/etc/passwd,group,shadow,gshadow文件的例子
虽然没有用到if else语句,但是同样达到了if else的效果,而且整个shell显得更加简洁