Eu tenho um script parecido com:
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
No entanto, o usuário deve fornecer uma chamada variável BATCHNUM e, caso contrário, preciso forçar a interrupção da execução desse script. Seria melhor se eu pudesse forçar o script que chama esse script a parar também (ou mesmo o script # 1 que chama o script # 2 que chama esse script).
fonte
Para testar se
BATCHNUM
está definido e sair se não estiver:Se você também deseja rejeitar o caso em que
BATCHNUM
está vazio, use em${BATCHNUM:+a}
vez de${BATCHNUM+a}
. Para obter informações sobre a${VARIABLE+TEXT_IF_NULL}
construção de expansão de parâmetros, consulte, por exemplo, o manual do bash .Não mate o processo pai. Você não sabe qual é o processo pai. Se algum script que chama este precisar abortar se esse script for interrompido, verifique o status de saída desse script. Por exemplo, no script # 2:
ou use
set -e
para interromper o script se algum comando retornar um status de falha (diferente de zero).fonte