环境
RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9
问题
Shell编程时出现如下错误:[: =: unary operator expected
解决
[plain]
#出现错误代码:
#第六行出现代码
values=(39 5 36 12 9 3 2 30 4 18 22 1 28 25)
numvalues=${#values[@]}
for (( i=0; i < numvalues; i++ )); do
lowest=$i
for (( j=i+1; j < numvalues; j++ )); do
if [ ${values[j]} -le ${values[$lowest]} ]; then
lowest=$j
fi
done
[i]}
values[i]=${values[lowest]}
values[lowest]=$temp
done
for (( i=0; i < numvalues; i++ )); do
echo -ne "${values[$i]}\t"
done
echo -e "\n\n-------end---------\n"
#解决后代码:
#在出错的地方增加了一对方括号
values=(39 5 36 12 9 3 2 30 4 18 22 1 28 25)
numvalues=${#values[@]}
for (( i=0; i < numvalues; i++ )); do
lowest=$i
for (( j=i+1; j < numvalues; j++ )); do
if [[ ${values[j]} -le ${values[$lowest]} ]];
then
lowest=$j
fi
done
#[i]}
values[i]=${values[lowest]}
values[lowest]=$temp
done
for (( i=0; i < numvalues; i++ )); do
echo -ne "${values[$i]}\t"
done
echo -e "\n\n-------end---------\n"
#出现错误代码:
#第六行出现代码
values=(39 5 36 12 9 3 2 30 4 18 22 1 28 25)
numvalues=${#values[@]}
for (( i=0; i < numvalues; i++ )); do
lowest=$i
for (( j=i+1; j < numvalues; j++ )); do
if [ ${values[j]} -le ${values[$lowest]} ]; then
lowest=$j
fi
done
[i]}
values[i]=${values[lowest]}
values[lowest]=$temp
done
for (( i=0; i < numvalues; i++ )); do
echo -ne "${values[$i]}\t"
done
echo -e "\n\n-------end---------\n"
#解决后代码:
#在出错的地方增加了一对方括号
values=(39 5 36 12 9 3 2 30 4 18 22 1 28 25)
numvalues=${#values[@]}
for (( i=0; i < numvalues; i++ )); do
lowest=$i
for (( j=i+1; j < numvalues; j++ )); do
if [[ ${values[j]} -le ${values[$lowest]} ]];
then
lowest=$j
fi
done
#[i]}
values[i]=${values[lowest]}
values[lowest]=$temp
done
for (( i=0; i < numvalues; i++ )); do
echo -ne "${values[$i]}\t"
done
echo -e "\n\n-------end---------\n"