• ベストアンサー

case inの制御文

シェルスクリプトの下記ソースに間違いはないですか? 最後のesacの次に改行は必要ですか? #!/bin/sh echo teststart i=2 case $i in 1) echo "a" ;; 2) echo "b" ;; *) echo "c" ;; esac

質問者が選んだベストアンサー

  • ベストアンサー
  • HOGERA23
  • ベストアンサー率28% (2/7)
回答No.2

エラーが出たんですか? 私はsdvsさんのスクリプトをコピペしたら普通に動きましたが。 自信ゼロですけどとりあえず回答。 エラーメッセージからすると in が悪さをしてるみたいですね。 in の後の改行文字がなんか変なのかな...。 ためしに case $i in の行を消して もう一回書き直してみてはどうでしょう。 (そしたらよくわからないけど動いたって経験を何回かしているもので) もしくは、 i=0 の次の行に export i を追加してみるとか。 (これは関係なさそうですけど)

その他の回答 (2)

  • ken__t
  • ベストアンサー率41% (53/129)
回答No.3

もしかすると、数値型と文字型を比較しようとしている為だと思います。 $iを"$i"とすれば通ると思います。

  • HOGERA23
  • ベストアンサー率28% (2/7)
回答No.1

間違いないと思います。 esacの次はとりあえず改行しとけば良いんじゃないでしょうか。

sdvs
質問者

補足

ありがとうございます。 なぜかエラーなんです。 ソースのエラーではなく、設定でしょうか? [root@xx my_test]# sh test.sh 'test.sh: line 4: syntax error near unexpected token `in 'test.sh: line 4: `case $i in [root@xx my_test]#

関連するQ&A