为什么mv在这个bash脚本中工作?

时间:2012-04-08 20:54:32

标签: bash shell mv

我正在尝试编写一个简单的脚本,如果缺少某个文件,它会将文件移动到目录中的顺序文件列表中。例如,如果我有一个名为“1”,“2”,“3”,“5”等文件的目录,我想将“3”移动到“4”,“3”移动到“2”等我在下面有以下代码。上部和下部对应于我想要移动的值。使用上面的例子,LOWER为1,UPPER为5。

 for z in $( eval echo {$UPPER..$LOWER}) ; do          
      checkfile $DIRNAME $z #Returns -1 on file missing
      if [[ $? -ne 0 ]]; then
           echo "Found bad match"
           for y in $( eval echo {$z..$LOWER}) ; do
                n=$(($y - 1))
                echo "$y $n"
                mv "$n" "$y"
           done
           exit 0
      fi  
 done

我收到以下输出

Found bad match
18 17
mv: cannot stat `17': No such file or directory
17 16
mv: cannot stat `16': No such file or directory
16 15
mv: cannot stat `15': No such file or directory
15 14
mv: cannot stat `14': No such file or directory

我不太清楚为什么mv会抱怨。任何想法将不胜感激!

1 个答案:

答案 0 :(得分:1)

您的mv命令正在尝试移动本地目录中的文件,但您检查的文件位于其他位置($DIRNAME中)。也许试试mv "$DIRNAME/$n" "$DIRNAME/$y"