为什么我的脚本的输出显示 "mv: command not found" 而不是当我直接在 shell 上显示 运行 时?

Why does the output from my script say "mv: command not found" but not when I run it on the shell directly?

我写了一个小脚本,可以为我重命名目录中的一些文件。

#!/bin/bash

a=1
for i in *.jpg ; do
        new=$(printf "%04d.jpg" "$a")
        mv "$i" "$new"
        let a=a+1
done

#end of file

在 运行ning 之后,脚本是这样说的:"mv: command not found"

我直接在shell上运行代码,怎么没有错误输出:

for i in *.jpg ; do new=$(printf "%04d.jpg" "$a") ; mv $i $new ; let a=a+1 ; done

可能是PATH设置的问题。 /bin 目录应该在您的 $PATH

为了调试目的,添加

echo PATH is $PATH

在脚本的开头,也许将 #!/bin/bash -vx 作为脚本的第一行。参见 this, execve(2), bash(1)

作为解决方法,替换

         mv "$i" "$new"

         /bin/mv "$i" "$new"

mv(1)