Bash 在“then”和“then”之后按“enter”有什么区别在if条件下
如果我把它写在脚本中,它就会运行Bash 在“then”和“then”之后按“enter”有什么区别在if条件下,bash,if-statement,syntax,Bash,If Statement,Syntax,如果我把它写在脚本中,它就会运行 if [[ 1 == 1 ]] then echo "true" fi 但是,如果我试图用新的语言来取代新线;当使用活动shell时,我发现语法错误 if [[ 1 == 1 ]]; then; echo "true"; fi 为什么? 在之后点击输入,然后点击和之间有什么区别上面写着: 在大多数情况下,复合命令描述中的命令列表可以用一个或多个换行符与命令的其余部分分开,并且后面可以用换行符代替分号 : if命令的语法为: if test-comm
if [[ 1 == 1 ]]
then
echo "true"
fi
但是,如果我试图用新的语言来取代新线;当使用活动shell时,我发现语法错误
if [[ 1 == 1 ]]; then; echo "true"; fi
为什么?
在之后点击输入
,然后点击
和之间有什么区别代码>上面写着:
在大多数情况下,复合命令描述中的命令列表可以用一个或多个换行符与命令的其余部分分开,并且后面可以用换行符代替分号
:
if
命令的语法为:
if test-commands; then
consequent-commands;
[elif more-test-commands; then
more-consequents;]
[else alternate-consequents;]
fi
这里有[[1==1]]
的测试命令。语法需要一个代码>,但由于“后面可能跟一个换行符来代替分号”规则,我们很好(后面有一个换行符)
对于然后是后续命令代码>部分,我们有
then
echo "true"
这很好,因为后续命令(即回显“true”
)“可以通过一条或多条换行线与命令的其余部分分离[即然后在这种情况下
)
同样,语法需要一个
next,但是我们使用了一个换行符,这是初始规则允许的
然后我们到达fi
就完成了。然后后面不应该有分号。这有点像if(newline)[[1==1]]…
与if的意思不同;[[1==1]]…
。从技术上讲,您不需要代码>完全正确。您甚至可以交互地使用多行;然后命令;[elif命令;然后是命令;]。。。[else命令;]fi
您可以用换行符替换任何空格和分号。相反,您不能用分号替换每一个换行符。这里有一个正式语法(用于Posix shell):当您阅读该语法时,您将看到非终结符换行符
和分隔符
;第一个是可选的换行符序列,第二个是分号,后跟换行符
,或者是强制换行符序列。bash语法将第一个写为换行符,第二个写为分号(大多数情况下)。
then
echo "true"