【发布时间】:2023-03-10 16:45:01
【问题描述】:
我有以下 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.png,pyr1925.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。我知道默认 /bin/sh 是破折号。我确保使用 bash 并通过echo $SHELL 进行检查。
为什么它不能作为脚本工作,但可以在终端上正常工作?我试图找到一个解决方案,但我能找到的只是“dash”和“bash”设置。
【问题讨论】:
-
这不是
bash错误信息;您没有使用bash运行脚本。 -
感谢您提供的信息,我会检查并尝试一下。
-
@chepner,是的,现在我意识到它适用于“bash myscript.sh”。如果我在脚本顶部写“#!/bin/bash”,它不会运行 bash 吗?
-
应该;你怎么运行它?顺便说一句,
$SHELL不包含当前 shell 的名称;它是您的默认 shell 的名称。 -
即使我的默认 shell 是 /bin/bash,我也只是打开一个终端并输入 $SHELL。我很困惑。
标签: bash