У меня скрипт выглядит так:
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
Тем не менее, пользователь должен предоставить переменную call BATCHNUM, в противном случае мне нужно заставить этот скрипт перестать работать. Было бы лучше, если бы я мог принудительно остановить скрипт, который вызывает этот скрипт (или даже скрипт # 1, который вызывает скрипт # 2, который вызывает этот скрипт).
источник
Чтобы проверить,
BATCHNUM
определено ли это, и выйдите, если это не так:Если вы также хотите отклонить случай, когда
BATCHNUM
пусто, используйте${BATCHNUM:+a}
вместо${BATCHNUM+a}
. Для получения информации о${VARIABLE+TEXT_IF_NULL}
конструкции расширения параметров см., Например, руководство по bash. .Не убивайте родительский процесс. Вы не знаете, что такое родительский процесс. Если какой-либо скрипт, вызывающий этот скрипт, должен прервать работу, если этот скрипт прерывается, заставьте его проверить состояние завершения этого скрипта. Например, в сценарии № 2:
или используйте
set -e
для отмены сценария, если какая-либо команда возвращает статус ошибки (ненулевой).источник