Saya memiliki skrip seperti:
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
Namun, pengguna harus memberikan BATCHNUM panggilan variabel dan jika tidak saya harus memaksa skrip ini berhenti berjalan. Akan lebih baik jika saya bisa memaksa skrip yang memanggil skrip ini untuk berhenti juga (atau bahkan skrip # 1 yang memanggil skrip # 2 yang memanggil skrip ini).
sumber
Untuk menguji apakah
BATCHNUM
sudah ditentukan, dan keluar jika tidak:Jika Anda juga ingin menolak kasing yang
BATCHNUM
kosong, gunakan${BATCHNUM:+a}
sebagai ganti${BATCHNUM+a}
. Untuk informasi tentang${VARIABLE+TEXT_IF_NULL}
konstruk ekspansi parameter, lihat misalnya manual bash .Jangan bunuh proses induk. Anda tidak tahu apa proses induknya. Jika beberapa skrip yang memanggil yang ini perlu dibatalkan jika skrip ini batal, buatlah periksa status keluar skrip ini. Misalnya dalam skrip # 2:
atau gunakan
set -e
untuk membatalkan skrip jika ada perintah yang mengembalikan status kegagalan (bukan nol).sumber