Script c shell saya tidak mengetahui status keluar 2, ketika tar gagal


-1

Saya memiliki kode di bawah ini

ssh ${DESTSERVNAME} 'cd /export/home/path/to/dir; Today=`date +%Y%m%d`; tar -cvf file_name.tar *${Today}*.*; gzip file_name.tar'    
if [ $? != 0 ]    
then    
    echo "Something is wrong with connection to ${DESTSERVNAME} or $

{DAILY_DEST_DIR}. Silakan periksa file $ LOGF, koneksi ke $ {DESTSERVNAME} atau file di $ {DAILY_DEST_DIR}, $ {NAME} .sh diakhiri secara abnormal "| mailx -r emailadreess@tt.com -s" !!! Silakan baca $ LOGF dan lakukan tindakan yang sesuai "emailaddress@tt.com
keluar 1
fi

Saya tidak mengerti mengapa kondisi saya jika tidak mencapai $? = 2
Saya menggunakan AIX dan ini adalah shell ac, dan juga saluran email saya tidak berfungsi.
Adakah yang bisa membantu saya?


Tapi ... itu bukan csh - if [ … ](dan if <cmd>secara umum) pasti sintaksis Bourne shell.
grawity

OK, tidak ada perbedaan. Kenapa tidak bekerja?
osamuyl

Katakanlah seperti ini. pesan tar adalah "tar: 20170208. *: Tidak ada file atau direktori", tetapi tetap membuat file tar
osamuyl

Jawaban:


0

Jadi dalam perintah jarak jauh Anda, Anda memberi tahu shell untuk mengabaikan status keluar. Ingat perbedaan antara a; bdan a && b: yang pertama menjalankan "b" tidak peduli apakah "a" berhasil atau gagal, sedangkan yang kedua berhenti jika "a" gagal.

Jadi yang Anda dapatkan sshadalah status keluar dari perintah terakhir yang dijalankan, yang selalu gzip karena ;pemisah tidak peduli dengan yang sebelumnya.

Sebaliknya, gunakan sesuatu seperti ssh $host "cd /foo && tar --foo && gzip foo.tar".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.