Hor*_*dea 88 linux bash command-line bashrc
我想知道如何在一行中编写 bash 脚本中的 if 条件。
例如,我怎么能把这个写在一行上,然后把另一个和它一样的放在下一行?
if [ -f "/usr/bin/wine" ]; then
export WINEARCH=win32
fi
Run Code Online (Sandbox Code Playgroud)
我问这个是因为我的 .bashrc 中有很多别名,而且我在多个系统上有相同的 .bashrc(同步),但我不需要每个系统上的所有别名。我把它们中的大部分放在 if 语句中,现在一切都很好,但它们占用了很多空间,每行 3 行加上它们之间的空行(我喜欢让它们很容易看到)
我也会将此技术用于环境变量。
dr_*_*dr_ 140
你会这样写:
if [ -f "/usr/bin/wine" ]; then export WINEARCH=win32; fi
Run Code Online (Sandbox Code Playgroud)
请注意,这也可以写成(如@glennjackman 所建议的那样):
[ -f "/usr/bin/wine" ] && export WINEARCH=win32
Run Code Online (Sandbox Code Playgroud)
小智 5
我还发现只需输入任何复杂的 if then else 命令,按 Enter,然后在执行后按向上箭头。命令行当然会重复最后输入的命令,但在这种情况下,它会根据您的需要将其全部放在一行中。这是一种作弊方式,但很有效。
小智 5
要在一行上测试和处理 true 和 false 条件,您可以执行以下操作:
[ -f "/usr/bin/wine" ] && export WINEARCH=win32 || echo "No file"
Run Code Online (Sandbox Code Playgroud)
您还可以包含退出代码:
[ -f "/usr/bin/wine" ] && export WINEARCH=win32 || exit 1
Run Code Online (Sandbox Code Playgroud)
但是,请避免在 or 运算符后面包含多个命令,因为它始终会被执行:
# This will always return an exit status of 1 even if the first condition is true
[ -f "/usr/bin/wine" ] && export WINEARCH=win32 || echo "No file" && exit 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
128232 次 |
最近记录: |