【发布时间】:2018-06-26 02:30:24
【问题描述】:
我在多篇文章中读到分号 (;) 在类 UNIX 外壳中等于换行。
但是,以下内容让我感到困惑,我也没有运气用谷歌搜索它。
我猜这是 shell 中 do 的问题,但“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 的一个独特问题吗?
【问题讨论】:
-
AFAIK,
do和then几乎是一个独特的问题(来自 if..then)。我想不出另一种情况,用;替换换行符会失败(并且 heredocs 是他们自己的特殊事物,其中空格很重要,所以这不算数)。不过,我已经准备好被纠正了! =)