在ubuntu16中((a+=10))没有用

来源:3-8 if-then中使用双括号

仰望丶Kun

2019-11-29

#!/bin/bash
a=10
((a+10))
echo $a

$ sh double_bracket.sh
double_bracket.sh: 3: double_bracket.sh: a+10: not found
10

在命令行中就可以运行
~$ a=10
~$ ((a+=10))
~$ echo $a

写回答

1回答

酷田

2019-11-29

Ubuntu中默认不是bash,而是使用了dash。dash中需要严格的语法,而且与bash语法不同。例如,bash中定义函数是使用function关键字的(function test() {}),但在ubuntu中使用的dash中没有该关键字,因此如果定义函数仍然使用function test() { }会报错,上面你得问题也是这样的

回答你得问题,在脚本中你使用了#!/bin/bash,这时候执行的时候你不应该使用sh 取执行,而是给你得文件增加可执行权限,再执行。这样操作,例如你得脚本是1.sh,使用chmod +x 1.sh给脚本加权限,然后./1.sh执行即可

建议做实验时使用CentOS或者RedHat,因为在企业中都会用这2种Linux系统,而且学习也会少走很多弯路。

可以尝试按上面方法修改,如果还不行再来告诉我哦

0
2
酷田
解决了问题就好,有问题随时交流
2019-11-29
共2条回复

掌握Shell脚本编程 360架构师带你进阶Linux高手

30%知识讲解+70%实例操作 掌握Shell脚本编程能力

1638 学习 · 297 问题

查看课程