【发布时间】:2012-12-15 21:54:31
【问题描述】:
如果这是 AS3 或 Java,我会执行以下操作:
fileName = dirName + "/" + (useDefault ? defaultName : customName) + ".txt";
但在 shell 中,这似乎是不必要的复杂,需要几行代码,以及相当多的重复代码。
if [ $useDefault ]; then
fileName="$dirName/$defaultName.txt"
else
fileName="$dirName/$customName.txt"
fi
您可以将所有内容压缩成一行,但这会极大地牺牲清晰度。
有没有更好的方法在 shell 中编写带有变量赋值的内联 if?
【问题讨论】:
-
William Purcell 的回答不如我的直接,但如果假设
$useDefault控制是否使用默认名称,它可能是一个更简洁的解决方案。 -
我已更新我的答案以正确引用所有内容。
-
fileName="$dirName/$([ $useDefault ] && echo "$defaultName" || echo "$customName").txt"我认为这尽可能接近?:。
标签: bash shell if-statement operators