Eu usaria uma função de shell para isso, em vez de um script:
rm-all-or-none() {
for f; do
[ -f "$f" ] ||
{ printf '%s is not an existing file, no files removed\n' "$f" >&2
return 1;}
done
rm -fv -- "$@"
}
Então, eu chamaria isso usando a expansão de contraventamento, em vez de uma glob. Globs só expandem para arquivos que existam , mas neste caso queremos especificar os arquivos e somente removê-los se todos deles existirem:
rm-all-or-none /tmp/bbsnode{1..4}
Versão equivalente mais longa:
rm-all-or-none() {
for f in "$@"; do
if [ -f "$f" ]; then
:
else
printf '%s is not an existing file, no files removed\n' "$f" >&2
return 1
fi
done
rm -fv -- "$@"
}
Veja também: