为什么我的脚本输出会说“mv:command not found”,但是当我直接在shell上运行它时却没有?

时间:2015-12-04 15:59:08

标签: bash shell mv

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

#!/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

运行脚本后说:“mv:command not found”

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

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

1 个答案:

答案 0 :(得分:5)

这可能是PATH设置的问题。 /bin目录应位于$PATH

出于调试目的,添加

echo PATH is $PATH

在您的脚本开始时,可​​能会将#!/bin/bash -vx作为您脚本的第一行。请参阅thisexecve(2)bash(1)

作为解决方法,请替换

         mv "$i" "$new"

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

请参阅mv(1)