동적 변수를 만들었습니다.
for (( c=1; c<=2; c++ ))
do
eval "prev$c=$number";
done
prev1
,prev2
for (( c=1; c<=2; c++ ))
do
eval "current$c=$number";
done
current1
,current2
변수가 있으면
$prev1
예 1
$prev2
예 예2
$current1
1
$current2
3
루프 내부의 경우와 비교하는 방법은 무엇입니까? 다음은 잘못된 내용입니다. 누군가 구문을 수정할 수 있습니까? 미리 감사드립니다.
for (( c=1; c<=2; c++ ))
do
if ((prev$i != current$i)); then
echo "prev$i is $prev[i] and current$i is $current[i], they are different"
fi
done
답변1
Bash에서는 변수 간접 참조를 사용할 수 있습니다
prev=prev$c
current=current$c
if ((${!prev} != ${!current})); then
echo "prev$c is ${!prev} and current$c is ${!current}, they are different"
fi
그러나 배열을 사용하는 것이 더 안전합니다(평가가 필요하지 않음).
#! /bin/bash
number=0
for (( c=1; c<=2; c++ )) ; do
prev[c]=$number
number=$c
current[c]=$number
if ((${prev[c]} != ${current[c]})); then
echo "prev$c is ${prev[c]} and current$c is ${current[c]}, they are different"
fi
done