Ich versuche, ein einfaches Skript zu schreiben, das Dateien in einer Liste von sequenziellen Dateien in einem Verzeichnis verschieben wird, wenn eines fehlt. Wenn ich zum Beispiel ein Verzeichnis mit Dateien mit den Namen "1", "2", "3", "5" usw. habe, möchte ich "3" auf "4", "3" auf "2" usw Ich habe den folgenden Code unten. Upper und Lower entsprechen den Werten, die ich durchschalten möchte. Im obigen Beispiel würde LOWER 1 und UPPER würde 5.Warum funktioniert mv in diesem Bash-Skript?
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
sein erhalte ich folgende Ausgabe
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
Ich bin mir nicht ganz sicher, warum mv beschwert wird. Irgendwelche Ideen würden sehr geschätzt werden!
Um Ihren Befehl zu debuggen, fügen Sie einfach das Wort "echo" vor 'mv' hinzu. Oder fügen Sie 'set -x' am Anfang des Skripts hinzu. – alexis