私はディレクトリ内のシーケンシャルファイルのリストにあるファイルが見つからない場合、そのファイルを移動する簡単なスクリプトを作成しようとしています。たとえば、 "1"、 "2"、 "3"、 "5"などのファイル名のディレクトリがある場合、 "3"を "4"、 "3"を "2"などに移動したい私は以下のコードを持っています。 UpperとLowerは、シフトしたい値に対応しています。上記の例を使用して、私は私が文句を言っている理由のMVはかなりわからないんだけど、次の出力mvがこのbashスクリプトで動作するのはなぜですか?
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
を受ける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
だろう。どんなアイデアでも大歓迎です!
コマンドをデバッグするには、単に "echo"という単語を 'mv'の前に追加します。あるいは、スクリプトの先頭に 'set -x'を追加してください。 – alexis