当我遇到包含此代码的this answer时,我正在寻找一种方法来检查是否使用Shell脚本安装了程序:
hash foo 2>&- || { echo >&2 "I require foo but it's not installed. Aborting."; exit 1; }
但该代码不是(人类)可读的,该语法的替代方法是什么?
答案 0 :(得分:9)
可读性非常主观。一旦你知道||
意味着短路 OR ,我特别认为原件非常易读。所以你读原文是“做这个,或这个,如果那个失败了。”
不使用||
的等效代码是:
if ! hash foo 2>&-
then
echo >&2 "I require foo but it's not installed. Aborting."
exit 1
fi
答案 1 :(得分:2)
对于习惯使用shell脚本的人来说,这是完全可读的,因为它是一个成语。可读性的唯一障碍是缺乏新行:
hash foo 2>&- || {
echo >&2 "I require foo but it's not installed. Aborting."
exit 1
}