一、简介
Linux命令,特别是组合到脚本中时,可以自动执行任务、管理系统资源和解决复杂问题。但是要真正发挥命令行的强大功能,需要了解如何控制命令执行流程,例如: &&、|| 等等。
这些符号虽然简单,但却是在Linux Bash中创建复杂命令序列的基础。使用它们,可以创建命令的条件链,根据每个命令的成功或失败来规定执行流程。它们一开始可能看起来令人生畏,但是一旦理解了它们的逻辑,就会发现它们在命令行工具包中不可或缺。
二、控制命令执行流程的有哪些操作符?
&&
||
;
三、&& 和 &
&&
&& 即为逻辑与,例如:command1 && command2,只有当command1执行成功后(执行成功返回0退出码,其他码都为失败),command2才执行
示例:
mkdir new_directory && ls new_directory
&
& 表示命令将会在后台执行,输出的结果不会输出到终端
示例:
ls &
四、|| 和 |
||
|| 即为逻辑或,例如:command1 || command2,只有当command1执行失败,command2才执行。
示例:
mkdir existing_directory || echo "Directory already exists!"
此处如果existing_directory目录已经存在,则会执行echo命令,输出报错提示
|
| 表示通道,通道可以想象成一个水流管道,一边进,一边出,之前讲过的标准输入输出用的就是管道,管道插在两个命令之间,把前面命令的标准输出作为后面命令的标准输入。
示例:
ls | grep nginx
五、;
;(分号)的含义是不管前面命令执行成功还是失败,都会执行后面的命令。
示例:
mkdir new_directory; ls
六、> 和 >>
>
> 用于把标准输出写入文本,会覆盖掉已有的内容
示例:
cat > test.txt
>>
>> 与 > 不同的是它不会覆盖原有内容,会把内容追加到结尾
七、< 和 <<
<
< 用于把标准输入读取到命令中
示例:
cat < abc.txt
<< 也是把标准输入读取到命令中,不过它可以读取多行文本,可以作为代替使用临时文件存储多行文本的方式
示例:
cat << END
Hello
This is a here document
END
cat从here文档接收输入的命令。<< END和END之间的行是输入行。当shell看到<< END时,它将读取输入,直到遇到END分隔符。
然后,它将这些行作为输入传递给cat命令,最后cat命令将它们输出到终端。