我在多篇文章中读到分号(;
) 在类 UNIX shell 中等于换行。
然而,以下内容让我感到困惑,我也没有运气用谷歌搜索它。
我猜这是一个问题do
在 shell 中,但“bash 分号 do”并不是最适合 google 的搜索词组合。
下面是一个简单的for
陈述。
for i in {1..10}
do
echo "hi"
echo "bye"
done
正如许多 Stack Overflow 专家所言,每个换行符都可以用分号代替。
所以..我们有以下“相同”声明。
for i in {1..10}; do; echo "hi"; echo "bye"; done
我们得到:
-bash: syntax error near unexpected token `;'
分号到底是什么?这是否只是一个独特的问题do
?
看着的语法for/do loop,
for name [ [in [words …] ] ; ] do commands; done
我们可以看到do
接下来是commands
立即,所以在之后使用换行符do
不会替换分号,而是替换空格。
描述为复合命令还说
在大多数情况下,复合命令描述中的命令列表可以通过一个或多个换行符与命令的其余部分分隔,并且后面可以用换行符代替分号。
但没有任何地方说你可以插入随机分号。 “每个换行符都可以用分号替换”是一个过于笼统的说法,并且不正确。
更多手动证据:在有关部分命令列表,它说(强调我的):
A list
是由一个运算符分隔的一个或多个管道的序列;
, &
, &&
, or ||
,并可选择由以下之一终止;
, &
, or a newline
.
在这些列表运算符中,&&
and ||
具有同等优先级,其次是;
and &
,具有相同的优先级。
一系列的一个或多个换行符可能出现在list
分隔命令,相当于分号。
所以换行符相当于分号在命令列表中.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)