Sna*_*Doc 6 scripting bash shell-script
在一些脚本中,我看到if条件语句写成:
if [ some_conditional_statement ]; then
# do stuff
fi
Run Code Online (Sandbox Code Playgroud)
或者
[ some_conditional_statement ] && #do stuff
Run Code Online (Sandbox Code Playgroud)
第二个示例是否等效(仅当条件为真时才会执行 do stuff 部分),但仅当您只需要执行一个命令时才有用,例如:
[ -f "/path/to/some/file" ] && . /path/to/some/file
Run Code Online (Sandbox Code Playgroud)
还是我遗漏了另一个区别?
好的,我想你明白\n(或在 bash 中)\n 本质上是一个没有副作用的命令,\n但它评估条件并给出适当的退出状态。\xc2\xa0\n你提到了链接s一起。\xc2\xa0\n你可以这样做;[ condition ][[ condition ]]&&
A && B && C\nRun Code Online (Sandbox Code Playgroud)\n相当于
\nif A\nthen\n if B\n then\n C\n fi\nfi\nRun Code Online (Sandbox Code Playgroud)\n但你似乎在问怎么做
\nif A\nthen\n B\n C\nfi\nRun Code Online (Sandbox Code Playgroud)\n你可以这样做
\nA && (B; C)\nRun Code Online (Sandbox Code Playgroud)\n或者
\nA && { B; C;}\nRun Code Online (Sandbox Code Playgroud)\n笔记:
\nB并C在子进程中运行。\xc2\xa0\n因此,\n像变量赋值或这样的命令cd对父 shell 没有影响。\xc2\xa0\n大括号中的命令与该A命令在同一进程中运行。{;&}我强烈建议使用if--语法,以then提高else可读性。
if 子句将执行之间的任何内容then,并且fi如果后面的表达式if为 true,这在 shell 术语中意味着其退出值为零。您可以使用命令或括号(只是命令的缩写形式)test。该a && b结构的意思是:“评估 a,如果为真,也评估 b”。因此,您的两个示例是等效的,但 if 子句更具可读性,并且可用于对多个命令进行分组。
| 归档时间: |
|
| 查看次数: |
1446 次 |
| 最近记录: |