![运行 Bash 脚本时的链接命令](https://linux22.com/image/1174547/%E8%BF%90%E8%A1%8C%20Bash%20%E8%84%9A%E6%9C%AC%E6%97%B6%E7%9A%84%E9%93%BE%E6%8E%A5%E5%91%BD%E4%BB%A4.png)
我只是好奇我是否可以在 bash 脚本执行完成后链接命令。
$ deploy-stg.sh <path to pem file>; notify-send "deployed"
以上示例仅用于演示。我想通过在所有命令中添加通知来节省一些时间。这样团队消息或进一步工作就可以继续,而不会浪费任何时间盯着终端。出于某些原因,我无法将这些命令包含在脚本本身中。
答案1
您展示的示例可以运行。测试时有问题吗?
使用链式命令的一个问题;
是,所有命令都会被执行。这可能是你的脚本的一个问题,正如steeldriver提到的。
;
在这种情况下,您可能更喜欢使用,而不是使用&&
,以便仅在脚本成功运行时显示通知。然后,如果脚本遇到错误,例如文件丢失、权限问题或不存在或语法错误的命令,则在其后链接的命令&&
将不会运行。
但是,根据脚本内容,您可能需要调整它以包含退出状态(在 Bash 中,零表示成功,其他任何值都表示错误),以防脚本运行时没有任何错误,但不知何故仍无法完成预期的工作。您可以通过exit 1
exit 2
在脚本中写入等来包含这些内容,通常作为条件的一部分。例如,下面是一段代码,用于检查运行脚本的用户是否是 root,如果不是,则导致脚本退出并出现错误:
if [ "$EUID" -ne 0 ]
then
echo "Please run as root"
exit 1
else
echo "You are root, continuing..."
fi