以下は私のプログラムですa.sh
。
A=10 B=20 C=0 D=1
for var in {A,B,C,D}
do
if [ $var = 0 ]
then
echo "$var value is 0"
else
echo "Ok"
fi
done
結果:
# sh a.sh
Ok
Ok
0 value is 0 <==== Instead of this I want "C value is 0"
Ok
私たちは何をすべきですか?
答え1
そしてbash
:
A=10
B=20
C=0
D=1
for var in A B C D; do
if [ ${!var} -eq 0 ]; then
echo "$var value is 0"
else
echo "Ok"
fi
done
-eq
整数値を比較し(または同じものを使用して)、(( ${!var} == 0 ))
変数に名前が格納されている変数の値を取得するために使用します。(( !${!var} ))
${!var}
var
またはより簡潔ですが、本質的に同じです(まだbash
)。
for var in A B C D E; do
case ${!var} in
0) printf '%s value is 0\n' "$var" ;;
*) echo 'Ok' ;;
esac
done
これは値を整数ではなく文字列として扱います。