Saya menarik dalam mengarahkan output dari dua perintah ke variabel. Saya tidak ingin output ditampilkan di layar, tetapi ditugaskan ke variabel dalam skrip saya sehingga saya dapat menggunakannya lagi.
apa yang saya lakukan adalah mendapatkan ukuran file dari direktori menggunakan perintah yang terlihat di bawah ini:
ls -l /var/spool | wc -c
Perintah ini memberi saya ukuran file dalam byte dan menampilkan output sebagai integer. Saya tertarik untuk mendapatkan integer ini ditugaskan ke variabel yang saya sukai sehingga saya bisa membandingkannya dengan variabel lain nanti
Ini sepertinya tidak berhasil:
size = ls -l /var/spool | wc -c
Apakah pengalihan bekerja?
Seperti ini....
ls -l /var/spool | wc -c > size
Either way saya ingin output numerik ini ditugaskan untuk variabel dan tidak ditampilkan di layar.
Setiap saran sangat disambut!
sumber
size=`ls -l /var/spool | wc -c`
. gunakan format ini dalam jawaban Anda: "` `size =` ls -l / var / spool | wc -c` `` "tanpa tanda kutip ganda;)$()
untuk alasan yang dijelaskan di sini: stackoverflow.com/a/9449788/2907484 :-)ls -l /var/spool | wc -c > size_file
, Anda bisaread size_var < size_file
. (2) Lihat juga Bisakah $ () selalu mengganti backticks untuk substitusi perintah?Saya lebih suka solusi yang ditawarkan oleh jawaban Rmano , tetapi jika Anda hanya ingin menggunakan pengalihan:
sumber
set -e
,set -o pipefail
, dll). Jadi, jika Anda menggunakan$(…)
skrip Anda akan selalu melanjutkan, sedangkan dengan pengalihan itu dapat diatur untuk gagal. (yang mungkin apa yang Anda inginkan, atau tidak).