我正在编辑别人的.sh文件,然后遇到了这一行。
我理解的是:
编辑:为了帮助表示我认为正在发生的事情,这是大多数其他编程语言中的等效方式。因为我对bash相当新,所以开放式的
if [ "$ACTION" = "install" -o \( "$ACTION" = "start" -a -z "$APPS" \) ]
我理解的是:
"$ACTION" = "install"
检查脚本的操作是否为安装-o
是OR运算符"$ACTION" = "start"
检查脚本是否启动另一个程序-a
是AND运算符-z "$APPS"
检查 $APPS 是否为空字符串
\( "$ACTION" = "start" -a -z "$APPS" \)
的意思。反斜杠括号(\( <action> \)
)是开始/结束注释吗?我在这里看过 here,这不是我预期的常规条件分组方式。编辑:为了帮助表示我认为正在发生的事情,这是大多数其他编程语言中的等效方式。因为我对bash相当新,所以开放式的
||
对我来说并不奇怪。if (ACTION == 'install' || /* ACTION == 'start' && APPS == '' */)
(
和)
字符来分组内部表达式,否则它们可能会被解释为其他含义。 - h0r53'('
。 - Barmar[
使用(
进行分组。Shell 使用(
来启动子 shell。\(
用于将(
从 Shell 中转义,以便[
可以看到它,使得 Shell 不会抛出错误:[ \( x \) ] && echo ok; [ ( x ) ] && echo oops
。 - jhnc\( \)
的目的已经得到了回答。 - rhavelka