arrays - 获取“第 11 行:[:9:预期一元运算符”
问题描述
我在 Bash 中编写了这个简单的冒泡排序代码,我遇到了这个奇怪的错误。虽然我得到了正确的输出,但这个错误一直困扰着我。
输出
Enter the array elements: 9 4 1 2 3 0 4 5
Array elements:
9 4 1 2 3 0 4 5
bubble.bash: line 11: [: 9: unary operator expected
Sorted Array elements:
0 1 2 3 4 4 5 9
代码:
#!/bin/bash
read -p "Enter the array elements: " -a arr
echo "Array elements: "
for elem in ${arr[@]}
do
echo -ne "$elem "
done
echo
for (( i = 0; i <= ${#arr[@]}-1; i++ )); do
for (( j = 0; j <= ${#arr[@]}-$i-1; j++ )); do
if [ ${arr[j]} -gt ${arr[j+1]} ]; then
t=${arr[$j]}
arr[$j]=${arr[$j+1]}
arr[$j+1]=$t
fi
done
done
echo "Sorted Array elements: "
for elem in ${arr[@]}
do
echo -ne "$elem "
done
echo
解决方案
换行
for (( i = 0; i <= ${#arr[@]}-1; i++ ));
至:
for (( i = 0; i < ${#arr[@]}-1; i++ ));
和
for (( j = 0; j <= ${#arr[@]}-$i-1; j++ ))
至:
for (( j = 0; j < ${#arr[@]}-$i-1; j++ ))