![bash 2 예상 정수 표현식](https://linux55.com/image/132706/bash%202%20%EC%98%88%EC%83%81%20%EC%A0%95%EC%88%98%20%ED%91%9C%ED%98%84%EC%8B%9D.png)
저는 bash 스크립팅을 배우고 있어요. 배열을 정렬하려고 하면 "라인 10과 15에 정수 표현식이 필요합니다. 제가 뭘 잘못하고 있는 건가요? 제 스크립트는 다음과 같습니다.
#!/bin/bash
array=('5' '9' '0' '20' '2' '15' '6' '25' '1')
b=0
n=${#array[@]}
i=0
while [ "$i" -lt "$n" ]
do
c=${array[$i]}
d=${array[$i+1]}
if [ "$c" -lt "$d" ]; then
j=0
while [ "$j" -le "$i" ]
do
f=${b[$j]}
if [ "$f" -gt "$c" ];
then b[$j]=$c
echo "${b[$j]}"
fi
j=$(( j+1 ))
done
fi
i=$(( i+1 ))
done
답변1
/ 십진 정수 비교 연산자를 사용 [
하여 항상 십진 정수가 아닌 피연산자에 대해 명령을 호출합니다.-lt
-gt
run 스크립트를 사용하면 어떤 일이 일어나는지 볼 수 있습니다 bash -x
. 다음과 같은 내용이 표시됩니다.
+ f=
+ '[' '' -gt 0 ']'
./myscript: line 15: [: : integer expression expected
그리고:
while [ "$i" -lt "$n" ]
do
[...]
d=${array[$i+1]}
루프의 마지막 단계에서는 배열의 마지막 요소 너머에 액세스하려고 하므로 해당 요소 $d
는 비어 있게 됩니다.
0 문자열로 초기화 $b
한 다음 배열로 액세스할 수도 있습니다. 0 인 경우를 제외하고 f=${b[$j]}
null 값을 얻는 방법도 참조하세요 .$f
$j
해당 코드로 무엇을 하려는지 모르겠지만 처음부터 다시 시작해야 할 것 같습니다.