CURL digunakan dalam shell

1

Saya mengeksekusi skrip shell di mana satu perintah curl hadir. Saya harus menyimpan output dari perintah curl (format xml) dalam file dan menampilkan hasilnya di layar. Agar hal ini terjadi "perintah tee" digunakan setelah meringkuk menggunakan pipa. Saya perlu memeriksa apakah perintah curl berhasil dijalankan atau tidak. Saya menggunakan $? tetapi mengambil status keluar dari perintah tee. Saya menggunakan PIPESTATUS [0] dan mengatur -o pipefail tetapi tidak berhasil untuk curl. Bagaimana saya memeriksa apakah perintah curl berhasil dijalankan atau tidak? Bagaimana cara menyimpan status keluar dari perintah curl dalam suatu variabel? Ini hanya kode demo.

curl output | tee -a filename

Saya ingin tahu status keluar dari curl

samfisher
sumber

Jawaban:

1

Gunakan $ PIPESTATUS var yang merupakan array. Mengikuti akan memberi Anda kode kembali dari perintah pipa.

curl output | tee -a filename
echo ${PIPESTATUS[0]}
Aditya Patawari
sumber
+1, tetapi membutuhkan peringatan bash .
Jan Hudec
0

Anda dapat menggunakan konstruksi berikut:

content=`curl http://www.google.com`
if [[ $? -ne 0 ]]; then 
  # do some fail stuff
else
  echo '$content' | tee /tmp/output.file
fi

Ini menyimpan output dari curl dalam suatu variabel, kemudian memeriksa status keluar, dan jika itu berhasil, tee output ke file (dan stdout).

mtak
sumber
gema? tidak ada kutipan? pada sesuatu yang diterima dari jaringan? serius? -1.
Jan Hudec
@JanHudec Anda benar tentang tanda kutip, saya berasumsi dia akan menarik sesuatu dari halaman yang dia percayai (saya mengedit posting). Anda dipersilakan untuk mengedit jawaban saya sehingga kami semua dapat belajar dari kebijaksanaan Anda
mtak