当前位置:编程学习 > 网站相关 >>

Shell编程时出现"[: =: unary operator expected"解决

环境
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"
 
 
补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,