- 締切済み
シェルの -eq の動作について
シェルの -eq の動作について質問があります。 次のプログラムの動作を例に挙げます。 【ファイル名:A.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 666 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A 【ファイル名:B.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 667 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A -Question- A.shがif文に入ってしまう理由を教えてください。 変数Bが二重参照しているような気がするのですが、 そのような機能がshにあるのでしょうか? あと、もう一つ質問があります。 このシェルを古いバージョンで実行すると、 A.sh: line 8: [: A: integer expression exprected というエラーが出てしまいます。 これについても、わかる人がいましたら教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- lunarosa
- ベストアンサー率73% (30/41)
1.> A.shがif文に入ってしまう理由を教えてください。 2.> A.sh: line 8: [: A: integer expression exprected 1.については、仰っている意味がよく分かりません。"A.sh"という文字列が if 文の中に見当たりません。 2.については、if 文の条件式が [ A -eq 666 ] のように展開されてしまいます。数値判定式として成立しないことによるエラーです。「B=A」部を「B=$A」にすれば良いと思います。
お礼
ありがとうございます。 2についてはわかりました。 1の質問については、書き直しをしたいと思いますので、 改めて質問を投稿させていただくことにします。 ありがとうございました。