shell脚本,运行报错【test3.sh: 3: test3.sh: Syntax error: Bad for loop variable】

ubuntu 虚拟机上运行以下命令会报错,

test3.sh文件内如如下:

#!/bin/bash
sum=0
for((f=0;f<20;f++))
do
 sum=`expr $f + $sum`
 echo "累加值是:$sum"
done
echo "计算的结果为:$sum"

运行的命令如下:

 sh test3.sh 

报错信息如下:

test3.sh: 3: test3.sh: Syntax error: Bad for loop variable

分析,ubuntu从某个版本开始,/bin/sh 链接到 dash了,而不是bash,所以不支持C语音语法的循环了,如果想要支持C语音形式的循环,就需要把sh链接改为bash即可。

xx@xx:~/workspace$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Sep 15 20:18 /bin/sh -> dash

解决方法一 如下:

 sudo dpkg-reconfigure dash

选择no,就可以修改过来

解决方法二:

bash test3.sh 

解决方法三

修改shell文件里的循环

#!/bin/bash
sum=0
for i in `seq 1 20`
do
        sum=`expr $i + $sum`
        echo "累加的值为:$sum"
done
echo "计算结果为:$sum"

本文参考自:shell脚本:Syntax error: Bad for loop variable错误解决方法(转)_韦大仙的博客-CSDN博客

你可能感兴趣的:(ubuntu,shell,ubuntu,linux,运维)