Ich habe ein Skript sieht aus wie:
c=0
for f in */*; do
cp -v "$f" "/myhome/CE$(printf '%0*d' 2 $BATCHNUM)-new-stuctures_extracted/test-$(printf '%0*d' 5 $c)"
c=$((c=c+1))
done
Der Benutzer muss jedoch einen Variablenaufruf BATCHNUM bereitstellen, andernfalls muss ich erzwingen, dass dieses Skript nicht mehr ausgeführt wird. Es wäre besser, wenn ich das Skript, das dieses Skript aufruft, zum Beenden zwingen könnte (oder sogar das Skript Nr. 1, das das Skript Nr. 2 aufruft, das dieses Skript aufruft).
quelle
So testen Sie, ob
BATCHNUM
definiert ist, und beenden Sie das Programm, wenn dies nicht der Fall ist:Wenn Sie auch den Fall ablehnen möchten, in dem
BATCHNUM
leer ist, verwenden Sie${BATCHNUM:+a}
anstelle von${BATCHNUM+a}
. Informationen zum${VARIABLE+TEXT_IF_NULL}
Parametererweiterungskonstrukt finden Sie z . bash-Handbuch .Beenden Sie nicht den übergeordneten Prozess. Sie wissen nicht, was der übergeordnete Prozess ist. Wenn ein Skript, das dieses aufruft, abgebrochen werden muss, wenn dieses Skript abgebrochen wird, überprüfen Sie den Beendigungsstatus dieses Skripts. ZB in Skript Nr. 2:
oder verwenden Sie
set -e
, um das Skript abzubrechen, wenn ein Befehl einen Fehlerstatus (ungleich Null) zurückgibt.quelle