Jika Anda ingin mengambil kode status HTTP dalam suatu variabel, tetapi masih mengarahkan konten ke STDOUT, Anda harus membuat dua STDOUT. Anda dapat melakukannya dengan subtitusi proses> () dan memerintahkan subtitusi $ () .
Pertama, buat deskriptor file 3untuk proses STDOUT Anda saat ini dengan exec 3>&1.
Kemudian, gunakan -oopsi curl untuk mengarahkan ulang konten respons ke fifo sementara menggunakan substitusi perintah, dan kemudian di dalam substitusi perintah itu, redirect output kembali ke proses Anda saat ini STDOUT 3dengan deskriptor file -o >(cat >&3).
Menyatukan semuanya dalam bash 3.2.57(1)-release(standar untuk macOS):
# creates a new file descriptor 3 that redirects to 1 (STDOUT)
exec 3>&1
# Run curl in a separate command, capturing output of -w "%{http_code}" into HTTP_STATUS
# and sending the content to this command's STDOUT with -o >(cat >&3)
HTTP_STATUS=$(curl -w "%{http_code}" -o >(cat >&3) 'http://example.com')
Perhatikan bahwa ini tidak berfungsi /bin/shseperti yang dicatat oleh SamK dalam komentar di bawah .