John John - 1 month ago 8
Bash Question

"let" internal shell command doesn't work in a shell script?

I did

a=1234
let "a=a+1"


on command line and it's fine. But when I do the same in a shell script. It prints out an error that "let: not found".
Here is the script file.

#!/bin/sh
a=1234;
let "a=a+1";
echo "$a";


Thanks,

Answer

The problem is likely that /bin/sh is not the same as, or does not behave the same as, your normal shell. For example, when bash is invoked as /bin/sh, it provides a subset of its normal features.

So, you may need to change your shebang line to use a different shell:

#!/bin/bash

or

#!/bin/ksh

You don't need the semi-colons at the ends of the lines.