아래는 내 프로그램입니다 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
이는 값을 정수가 아닌 문자열로 처리합니다.