重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

シェルの -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
XXXXXXX


【ファイル名: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 回答 (1件)

【ファイル名:A.sh】を示しておいて、


>「実行方法」
>sh B.sh
とあるのは単なる転記ミスなのか・・・実行しているスクリプトが違っていて勘違いされているかな?

あと、ソースファイル上のB=AはB=$Aじゃないとエラーになると思いますが。

「処理がif文に入ってしまう理由」ですが、[ $B -eq 666 ] の結果が真だからでしょう。


「変数Bが二重参照」の部分の意味がよく分からないので、どことどこの二重参照なのか示してもらえれば、質問者様の意図がよくわかると思います。
    • good
    • 0

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