在我的bash脚本中找不到“let”命令

时间:2017-02-22 13:41:26

标签: bash

我有以下bash脚本,

#!/bin/bash
echo $SHELL

i=1
for img in ../img/*.png; do
  echo $img
  new=$(printf "../img/tmp/pyr%d.png" "$i")
  echo $new
  # cp "$img" "$new"
  let i=i+1
done
# avconv -r 2  -i ../img/tmp/pyr%d.png -b:v 1000k ../pop_pyr.mp4

../img文件夹中,有文件pyr1920.pngpyr1925.png,...

当我运行此脚本时,我收到此错误

../img/pyr1920.png
../img/tmp/pyr1.png
make_video.sh: 10: make_video.sh: let: not found
../img/pyr1925.png
../img/tmp/pyr1.png

但是我将脚本粘贴在一个终端中,它完全正常。

../img/pyr1920.png
../img/tmp/pyr1.png
../img/pyr1925.png
../img/tmp/pyr2.png

我的环境是ubuntu 14.04。我知道default / bin / sh是破折号。我确保使用bash并按echo $SHELL进行检查。

为什么它不能用作脚本但在终端上工作正常?我试图找到一个解决方案,但我能找到的只是“破折号”和“bash”设置。

3 个答案:

答案 0 :(得分:1)

这样做:

i=$((i+1))

i=$(expr $i + 1)

答案 1 :(得分:0)

我很抱歉回答我的问题。 我在使用sh script.sh而不是bash script.sh运行我的脚本。 bash script.sh工作正常。

但我不能通过脚本顶部的#!/bin/bash指定它吗?

答案 2 :(得分:0)

我也遇到了同样的错误,检查是否发现这段代码可以满足您的需求

i=`expr $i + 1`