在教程和操作指南中,我经常看到命令组合在一起。例如,
sudo apt-get update && sudo apt-get install pyrenamer
Run Code Online (Sandbox Code Playgroud)
似乎有四种可能的连接器:&
,&&
,||
和;
。尽管&
连接器对我来说很清楚(它将进程发送到后台并使终端可用),但不清楚&&
和之间的区别;
。||
直到 Kaya 发表评论我才知道。
以下问题涉及两个连接器之间的区别,但主要在评论中进行:
所以这里有一些相关的问题:
;
和 和有&&
什么区别?cd /somewhere_else; rm -Rf *
如果命令链中的第一个元素失败,则类似命令可能会产生破坏性后果。我是 Linux 和 Bash 脚本的新手。在工作中,我看到 Bash 脚本的结构与此类似:
mkdir build && cd build && touch blank.txt
Run Code Online (Sandbox Code Playgroud)
或者:
mkdir build; cd build; touch blank.txt
Run Code Online (Sandbox Code Playgroud)
甚至是异国情调:
COMMAND="mkdir build && cd build && touch blank.txt"
eval ${COMMAND}
Run Code Online (Sandbox Code Playgroud)
最后一个示例给出了一个可能的用例,其中一行可能有用,但通常以下内容更易于阅读并且(至少对我而言)允许您直观地调试脚本:
mkdir build
cd build
touch blank.txt
Run Code Online (Sandbox Code Playgroud)
在一条线上塞满所有东西是否有技术优势?