多条命令中的逻辑运算和括号
1、逻辑或“||”
运算符格式:command1 || command2
执行命令时,先执行command1,如果command1执行成功,则跳过命令command2,执行后面的内容;如果command1执行失败才会执行command2.
用法示例:
(1)下面是一个读取邮件的例子:
[zhu@localhost ~]$ mail -f /root/mbox || echo "Permission denied" /root/mbox: Permission denied Permission denied [zhu@localhost ~]$
普通用户使用mail命令读取root的历史邮件,如果失败,则显示提示信息。然而上面的示例中提示信息有两条,可以使用如下方法屏蔽错误提示:
[zhu@localhost ~]$ mail -f /root/mbox 2>/dev/null || echo "Permission denied" Permission denied [zhu@localhost ~]$
(2)逻辑或在管理和维护系统的过程中很有用。例如测试两个主机的连通性,如果失败则返回提示:
[root@localhost zhu]# ping 125.25.34.2 -c3 &>/dev/null || echo "Host network connection is lost." Host network connection is lost.
2、逻辑与“&&”
运算符格式:command1 && command2
先执行命令command1,如果执行成功,则会继续执行命令command2;如果执行失败,就会跳过command2.
用法示例:
(1)例如为移动文件操作添加提示信息:
[root@localhost zhu]# mv a* test/ && echo "Successfully moved files." Successfully moved files.
(2)在管理和维护系统时,逻辑与可以用于当测试正常时向用户输出提示信息。例如,检查主机服务器是否能正常提供服务并输出提示信息:
[root@localhost zhu]# wget http://220.181.111.148 &>/dev/null && echo "Host service running." Host service running.
上面命令中使用的命令wget用于检查服务器是否能正常提供服务。
3、括号
Linux系统提供了两个括号:圆括号“()”和花括号“{}”。使用方法相同,功能却不一样。
括号的基本格式:
(command1;command2;command3…)
{command1;command2;command3…}
Linux系统遇到括号时,会按顺序先执行括号内的命令,直到括号内的所有命令执行结束,然后再返回执行其他命令。
花括号的使用方法与圆括号基本一致,不同的是花括号内的所有命令都会被放入子shell中执行。
提示:通常将括号与命令逻辑操作符配合使用,以达到执行多条命令的目的。
用法示例:
下面是一个使用圆括号监控系统的例子:
[root@localhost zhu]# ping 222.22.22.22 -c3 &>/dev/null || (echo "Host network connection is lost." | tee network_info;mail -s "network error" root <network_info;rm -rf network_info) Host network connection is lost.