"let"内部shell命令在shell脚本中不起作用?

Joh*_*ohn 7 unix shell

我做到了

a=1234 
let "a=a+1"
Run Code Online (Sandbox Code Playgroud)

在命令行上,它很好.但是当我在shell脚本中执行相同操作时.它打印出一个"让:未找到"的错误.这是脚本文件.

#!/bin/sh
a=1234;
let "a=a+1";
echo "$a";
Run Code Online (Sandbox Code Playgroud)

谢谢,

Erw*_*and 10

不要用let.使用POSIX算术扩展:a=$(($a+1)).这保证适用于任何符合POSIX标准的shell.

  • 这是最好的解决方案 (2认同)

Jon*_*ler 7

问题很可能/bin/sh与您的普通shell不一样,或者表现不一样.例如,当bash调用as时/bin/sh,它提供其正常特征的子集.

因此,您可能需要更改shebang行以使用不同的shell:

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

要么

#!/bin/ksh
Run Code Online (Sandbox Code Playgroud)

您不需要在线的末端使用分号.