Uma maneira comum é:
die() {
echo "$*" 1>&2
exit 1
}
então você usa assim:
mkdir -p some/path || die "mkdir failed with status $?"
Ou, se você quiser incluir o status de saída, altere-o para:
die() {
echo "FATAL ERROR: $* (status $?)" 1>&2
exit 1
}
e, em seguida, usá-lo é um pouco mais fácil:
mkdir -p some/path || die "mkdir failed"
Caso você não tenha visto command1 || command2
antes, ele executa command1
e, se command1
falhar, será executado command2
.
Você pode ler como "crie o diretório ou morra".
Seu exemplo ficaria assim:
mkdir -p some/path || die "mkdir failed"
cd some/path || die "cd failed"
run_some_command || die "some_command failed"
Ou você pode alinhar o dies
mais à direita para que o código principal seja mais óbvio.
mkdir -p some/path || die "mkdir failed"
cd some/path || die "cd failed"
run_some_command || die "some_command failed"
Além disso, se você for usar o nome some/path
várias vezes, armazene-o em uma variável para não precisar continuar digitando e, se necessário, altere-o facilmente.
dir=some/path
mkdir -p "$dir" || die "Cannot make $dir"
cd "$dir" || die "Cannot cd to $dir"
run_some_command || die "Cannot run some_command"
E se você planeja corrigir o problema e executar novamente o script, talvez queira que o script funcione se o diretório já existir, portanto, não é necessário removê-lo primeiro. Nesse caso, você deseja
dir=some/path
if [ ! -d "$dir" ]; then
mkdir -p "$dir" || die "Cannot make $dir"
fi
cd "$dir" || die "Cannot cd to $dir"
run_some_command || die "Cannot run some_command"