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

/ 10進整数比較演算子を使用[して、常に10進整数ではないオペランドに対してコマンドを呼び出します。-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

そのコードで何をしたいのかわかりませんが、最初からやり直す必要があるようです。

関連情報