Bash if语句中的ASH if语句

Bash if语句中的ASH if语句,bash,syntax,ash,Bash,Syntax,Ash,我见过许多例子,其中有多个条件相互关联,但有两个不同的不相关条件,其中第二个条件只有在第一个条件为真时才会发生。 如何在一行中组织好以下内容 funtion1 if [[ $valueX == 2 ]]; then funtion2 if [[ $valueY -gt 16 ]]; then sleep $valueZ fi fi 你可以把它组织得井井有条,也可以把它排成一行 我想说,你现在所拥有的已经组织得很好了。我不认为有任何方法可以在不让它变得不那

我见过许多例子,其中有多个条件相互关联,但有两个不同的不相关条件,其中第二个条件只有在第一个条件为真时才会发生。 如何在一行中组织好以下内容

funtion1
if [[ $valueX == 2 ]]; then
    funtion2
    if [[ $valueY -gt 16 ]]; then
        sleep $valueZ
    fi
fi

你可以把它组织得井井有条,也可以把它排成一行

我想说,你现在所拥有的已经组织得很好了。我不认为有任何方法可以在不让它变得不那么清晰的情况下,以更少的行重新组织它

(如果
功能2
不存在,您可以将这两个条件结合起来。)

如果您坚持将整段代码放在行上,只需将行连接起来并添加分号即可,如下所示:

funtion1 ; if [[ $valueX == 2 ]]; then funtion2 ; if [[ $valueY -gt 16 ]]; then sleep $valueZ ; fi ; fi
但正如我所说,我不认为有人会称之为“组织良好”;它比原来的多行缩进的版本更难阅读和维护

请注意,
[[
语法是特定于的;不支持它


(哦,你把“函数”拼错了。)

好的,谢谢,我一个接一个地用了20个,我想它可能会变得更紧凑。。但我猜不是:)@Nixx:如果条件之间存在某种一致的关系,你可能仍然能够重新组织代码。嗯,不确定,只有function2和valueX对所有20个元素都是相等的。其他元素是不同的(尽管按顺序编号)目前,我正在清理我的代码,结果发现它更倾向于将所有内容都放在一行中。我如何做到这一点?是否有一个“行尾”在所有情况下都有效的字符?在某些情况下,您可以用
替换行尾。如果您将所有行合并为一行,在
之后添加分号,然后在
行之后添加分号,则应该有效。但是这样的布局很难看,也很难阅读。为什么希望所有内容都放在一行上?您的问题被标记为w对于“bash”和“ash”,有两个不同的shell。
[
语法是bash特有的;ash不支持它。