bash 2 예상 정수 표현식

bash 2 예상 정수 표현식

저는 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

해당 코드로 무엇을 하려는지 모르겠지만 처음부터 다시 시작해야 할 것 같습니다.

관련 정보