Mam skrypt wygląda następująco:
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
Jednak użytkownik musi podać zmienne wywołanie BATCHNUM, w przeciwnym razie muszę wymusić zatrzymanie działania tego skryptu. Byłoby lepiej, gdybym mógł zmusić skrypt, który wywołuje ten skrypt, do zatrzymania się (lub nawet skrypt nr 1, który wywołuje skrypt nr 2, który wywołuje ten skrypt).
źródło
Aby sprawdzić, czy
BATCHNUM
jest zdefiniowane i wyjść, jeśli nie jest:Jeśli chcesz również odrzucić skrzynkę, w której
BATCHNUM
jest pusta, użyj${BATCHNUM:+a}
zamiast${BATCHNUM+a}
. Aby uzyskać informacje na temat${VARIABLE+TEXT_IF_NULL}
konstrukcji rozszerzenia parametru, patrz np . Instrukcja bash .Nie zabijaj procesu nadrzędnego. Nie wiesz, co to jest proces nadrzędny. Jeśli jakiś skrypt, który go wywołuje, musi przerwać działanie, jeśli ten skrypt zostanie przerwany, spraw, aby sprawdził status wyjścia tego skryptu. Np. W skrypcie nr 2:
lub użyj,
set -e
aby przerwać skrypt, jeśli dowolne polecenie zwróci status błędu (niezerowy).źródło