zoukankan      html  css  js  c++  java
  • shell脚本:Syntax error: Bad for loop variable错误解决方法(转)

    Linux Mint中写了一个简单的shell脚本,利用for..do..done结构计算1+2+3......+100的值,结果执行"sh -n xxx.sh"检测语法时总是报错,但在PC机上可正常运行;
    脚本:
    #!/bin/bash
    #information
     
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
     
    read -p "Please input a num " num
    sum=0
    for ((a=0; a<=$num; a++))
    do 
    sum=$(($sum + $a))
    done
    echo "the sum is ==> $sum"
    exit 0
    错误如下:
    Syntax error: Bad for loop variable
     分析: 从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell;其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash。
    allen@allen-lql ~/workspace/script $ ls -l /bin/sh
    lrwxrwxrwx 1 root root 4 Aug 12 14:29 /bin/sh -> dash
    
    所以在使用sh执行检测的时候实际使用的是dash,而dash不支持这种C语言格式的for循环写法。
    解决办法: 1、将默认shell更改为bash。(bash支持C语言格式的for循环)
    sudo dpkg-reconfigure dash

    在选择项中选No

    2.这样执行就没问题

    bash test.sh

    3.那如果我们只想用sh test.sh 这样的方式执行,怎么办呢?

    修改一下代码.

    for i in `seq 10`                  
    do                                 
                                       
        echo Good Morning ,this is  $i  shell program.
                                       
    done

    这个时候,你再执行 sh test.sh,就不会报错误啦.

     
     
  • 相关阅读:
    IO流
    myEclipse的使用
    单例模式
    日期的使用
    String类的常用方法
    break、continue和return的区别
    包装类和随机数
    enum类的使用
    Java基础概念性的知识总结
    汇编中的函数调用与递归
  • 原文地址:https://www.cnblogs.com/lh03061238/p/11106581.html
Copyright © 2011-2022 走看看