array=( $(<abc.txt) )
len=${#array[*]}
i=0
while [ $i -lt "$len" ]
do
j=0
while [ $j -lt $(( (len - 1)) - i)) ]
do
k=$((j + 1))
if [ "${array[$j]}" -gt "${array[$k]}" ]
then
temp=${array[$j]}
array[$j]=${array[$k]}
array[$k]=$temp
fi
j=$k
done
i=$((i + 1))
done
echo "${array[@]}"
我的数组没有排序,我也收到一条消息&#34;:整数表达式预期&#34;。它在我朋友的电脑上工作正常。我只想从另一个文件获取输入到数组然后使用bubblesort。如果我将数组声明为array =(1 2 3 4 9 8 7 6 5),它也可以正常工作。
答案 0 :(得分:0)
你的括号在第二个while语句中没有匹配,我改变了 len声明。 chepner是正确的,shellcheck.net会为你解决这个问题。 (您甚至可以在本地安装shellcheck。)
#!/bin/bash
#array=($(<abc.txt))
array=(1 2 3 4 9 8 7 6 5)
len=${#array[@]}
i=0
while [ $i -lt "$len" ]
do
j=0
while [ $j -lt "$(( ( len - 1 ) - i))" ]
do
k=$((j + 1))
if [ "${array[$j]}" -gt "${array[$k]}" ]
then
temp=${array[$j]}
array[$j]=${array[$k]}
array[$k]=$temp
fi
j=$k
done
i=$((i + 1))
done
echo "${array[@]}"