問題ID: 21699 シェルスクリプト(while.sh)の例について

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-4-15 18:12
ゲスト    投稿数: 0
シェルスクリプト(while.sh)の例の記述内
3行目 while [ $NUM -le 3 ];
一番最後の記載に文字があり、
私にはセミコロン(;)に見えるのですが
セミコロン(;)の記載が必要でしょうか。

ご回答をお願いします。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-4-16 10:23
arashi1977  長老 居住地: 広島  投稿数: 1715
引用:
シェルスクリプト(while.sh)の例の記述内
3行目 while [ $NUM -le 3 ];
一番最後の記載に文字があり、
私にはセミコロン(;)に見えるのですが
セミコロン(;)の記載が必要でしょうか。
えー、ぶっちゃけいうとなくても大丈夫です。
逆に、あっても大丈夫です。

シェルスクリプトと言っても結局bash上で実行されるので、そのままやってみるとわかりやすいです。
私の環境でやってみます。
$ echo $SHELL
/bin/bash
$ NUM=1
$ while [ $NUM -le 3 ]
> do
> echo $NUM
> let NUM=NUM+1
> done
1
2
3
セミコロンなしでも、ちゃんと実行されてますね。じゃあbashにはどう見えてるのかって言うと
$ history | tail -n 4
  501  echo $SHELL
  502  NUM=1
  503  while [ $NUM -le 3 ]; do echo $NUM; let NUM=NUM+1; done
  504  history | tail -n 4
改行位置とも異なる場所にセミコロンが入ってますね。これざっくり言えば、bashからみた処理の区切りです。
単独のセミコロンは「そんなコマンドはねぇ!」って怒られるのですが、区切り文字としてのセミコロンはOKなんです。
$ ;
-bash: syntax error near unexpected token `;'
$ date;
2018年 4月16日 月曜日 10時20分21秒 JST
まぁこの実行例や出題にとってセミコロンは重要ではないので、豆知識として覚えとく、ぐらいでよいかと思います。

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.