shループで「do」の後に「;」がないのはなぜですか?

shループで「do」の後に「;」がないのはなぜですか?

1行に書くときにシェルループの後に文字がないのはなぜですか;do

それは私の意味です。複数行にわたって作成すると、forループは次のようになります。

$ for i in $(jot 2)
> do
>     echo $i
> done

一行で:

$ for i in $(jot 2); do echo $i; done

折り畳まれたすべての線が;後ろに表示されます。とは別にこのdo行にが含まれている場合は;エラーです。おそらく私よりはるかにスマートな誰かがこれが正しいことだと思いますが、私はなぜそうなのかわかりません。これは私に一貫性がないようです。

ループにも同じですwhile

$ while something
> do
>     anotherthing
> done
$ while something; do anotherthing; done

ベストアンサー1

これがコマンドの構文です。バラより複合コマンド

for name [ [in [words …] ] ; ] do commands; done

注意: do commands

ほとんどの人は簡単に読むことができるように、およびをdo別々commandsの行に表示しますが、必須ではありません。次のように書くことができます。

for i in thing
do something
done

私はこの質問が特にシェルに関するものであることを知っており、bashのマニュアルに接続しました。シェルマニュアルにはこのような内容は書かれていませんが、シェルにはこう書かれています。Stephen Byrneが書いた記事バイトマガジンの場合。

スティーブンはこう言いました。

コマンドリスト;改行文字(セミコロン)で区切られた、または終わる1つ以上の単純なコマンドシーケンス。また、次の予約語はするそして完璧通常、改行文字または;...が前に続きます。コマンドのリストは次のとおりです。する処刑される。

おすすめ記事