アプリ版:「スタンプのみでお礼する」機能のリリースについて

シェルの -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
というエラーが出てしまいます。
これについても、わかる人がいましたら教えてください。

A 回答 (1件)

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」にすれば良いと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
2についてはわかりました。
1の質問については、書き直しをしたいと思いますので、
改めて質問を投稿させていただくことにします。

ありがとうございました。

お礼日時:2007/06/20 10:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!