Sistem
Linux hosek 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Isu
Saya perlu mendapatkan output sebagai perintah, dalam skrip bash, untuk menyimpan variabel.
Contoh
sed -n '/# Main configuration./,/# Websites./p' webcheck-$category.cfg | sed '1,1d' | sed '$ d'
Perintah ini mengembalikan baris-baris ini:
email_sender='[email protected]'
email_recipients='[email protected]'
Bagaimana saya bisa membaca / menjalankan output / baris ini sebagai perintah dalam skrip? Apakah menyimpan hasil ini ke file dan kemudian membacanya dengan source
cara hanya perintah?
Saya mencoba | source
di akhir perintah, tetapi hanya membaca dari file.
Saya mencoba echo
pada awalnya, tetapi itu tidak berpengaruh.
Terima kasih.
sumber
for var in email_sender email_recipient email_subject email_attachement etc ; do printf -v "${var}" '%s' "$(grep -oP $var'=\K.*' webcheck-$category.cfg)"; done
Namun ini gagal kriteria "sederhana".Anda dapat menggunakan substitusi proses :
sumber
atau
Keluaran:
[email protected] [email protected]
sumber
bash baca builtin menangani hal-hal seperti ini dengan baik.
read
membaca baris dari stdin menjadi variabel.-d ''
mematikan pemisahan spasi, kecuali untuk baris baru.-r
Menonaktifkan\
lolos.cmdA < <(cmdB)
bekerja mirip dengan cmdB | cmdA, kecuali dalam cmdA sebelumnya dijalankan di ~ this ~ shell, alih-alih sebuah subkulit, yang diperlukan untuk membaca agar berfungsi seperti yang diharapkan.sumber
var=value
?