Tengo un script que se parece a:
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
Sin embargo, el usuario debe proporcionar una llamada variable BATCHNUM y de lo contrario necesito forzar que este script deje de ejecutarse. Sería mejor si pudiera forzar que el script que llama a este script se detenga también (o incluso el script # 1 que llama al script # 2 que llama a este script).
fuente
Para probar si
BATCHNUM
está definido y salir si no lo está:Si también desea rechazar el caso donde
BATCHNUM
está vacío, use en${BATCHNUM:+a}
lugar de${BATCHNUM+a}
. Para obtener información sobre la${VARIABLE+TEXT_IF_NULL}
construcción de expansión de parámetros, consulte, por ejemplo, el manual de bash .No mates el proceso padre. No sabes cuál es el proceso principal. Si algún script que llama a este necesita abortar si este script aborta, haga que verifique el estado de salida de este script. Por ejemplo, en el guión n. ° 2:
o use
set -e
para abortar el script si algún comando devuelve un estado de falla (distinto de cero).fuente