头图

一、简介

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命令将它们输出到终端。

唐青枫
12 声望3 粉丝