我想写一个简单的脚本,将文件移动到目录中的顺序文件列表中(如果缺少的话)。例如,如果我有一个名为“1”,“2”,“3”,“5”等文件的目录,我想将“3”移动到“4”,“3”到“2”等。我有下面的代码。 Upper和Lower对应于我想要转换的值。使用上面的例子,LOWER是1和上会5为什么mv在这个bash脚本中工作?
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是抱怨。任何想法将不胜感激!
要调试你的命令,只需在'mv'前面加上“echo”一词。或者在脚本的顶部添加'set -x'。 – alexis 2012-04-08 20:57:38