shell脚本:Syntax error: Bad for loop variable错误解决方法

来源:互联网 发布:淘宝怎么装修店铺首页 编辑:程序博客网 时间:2024/05/18 11:36
Linux Mint中写了一个简单的shell脚本,利用for..do..done结构计算1+2+3......+100的值,结果执行"sh -n xxx.sh"检测语法时总是报错,但在PC机上可正常运行;
脚本:
[html] view plain copy
  1. #!/bin/bash  
  2. #information  
  3.    
  4. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin  
  5. export PATH  
  6.    
  7. read -p "Please input a num " num  
  8. sum=0  
  9. for ((a=0; a<=$num; a++))  
  10. do   
  11. sum=$(($sum + $a))  
  12. done  
  13. echo "the sum is ==> $sum"  
  14. exit 0  
错误如下:
[html] view plain copy
  1. Syntax error: Bad for loop variable  
 分析:
从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell;其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash。
[html] view plain copy
  1. allen@allen-lql ~/workspace/script $ ls -l /bin/sh  
  2. lrwxrwxrwx 1 root root 4 Aug 12 14:29 /bin/sh -> dash  
所以在使用sh执行检测的时候实际使用的是dash,而dash不支持这种C语言格式的for循环写法。

解决办法:
1、将默认shell更改为bash。(bash支持C语言格式的for循环)
[html] view plain copy
  1. sudo dpkg-reconfigure dash  

在选择项中选No

2、直接使用bash检测:

[html] view plain copy
  1. bash -n xxx.sh  

3、为了确保shell脚本的可移植性,直接更改shell脚本,使用shell支持的for循环格式:

[html] view plain copy
  1. for a in `seq $num`  
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 熏香怎么用 自制熏香 熏香品牌 熏香制作 熏鱼 熏鱼做法 熏鱼的做法 家常熏鱼 五香熏鱼 怎么做熏鱼 如何做熏鱼 怎样做熏鱼 熏鱼怎么做 熏鱼图片 熏鱼怎么吃 熏鱼的家常做法 上海本帮熏鱼 烟熏鱼怎么做好吃 湖南烟熏鱼的家常做法 秘制熏鱼的做法大全 熏鱼怎么做好吃 五香熏鱼的做法 熏鱼的制作方法 上海熏鱼图片 熏鱼汁怎么熬 熏鱼的做法大全图解 怎样做熏鱼好吃又简单 五香熏鱼正宗做法 鲟鱼怎么做 鲟鱼怎么做好吃 熏鸡 沟帮子熏鸡 熏鸡做法 熏鸡的做法 卓资山熏鸡 熏鸡架做法和配料 沟帮子熏鸡哪家正宗 三原熏鸡 卓资熏鸡 熏鸡怎么做 熏鸡怎么吃