Bisakah seseorang menggunakan beberapa dokumen di sini untuk memberikan input ke perintah dalam bash?
$ cat <<<foo <<<bar
bar
$ cat <<EOF1 <<EOF2
> foo
> EOF1
> bar
> EOF2
bar
Jelas, dalam kedua kasus, dokumen-kedua di sini digunakan sebagai stdin, dan menggantikan referensi pertama. Apakah solusi untuk menggunakan echo
s?
$ cat <(echo -n foo) <(echo bar)
foobar
Juga, karena alasan tertentu, menggunakan kombinasi tidak berhasil untuk saya. Kenapa bisa begitu?
$ cat <<<foo <(echo bar)
bar
$ cat <(echo -n foo) <<<bar
foo
bash
io-redirection
here-document
Sparhawk
sumber
sumber
paste
dengan input dummy. Saya kira saya bisa memikirkan beberapa skenario lain. Jika saya memiliki skrip dengan teks pra-dimanipulasi dalam beberapa variabel, maka saya mungkin ingin melakukan sesuatu untuk keduanya dengan perintah yang hanya mengambil file, misalnyadiff
.cat <<EOF1 <<"EOF2"
.Jawaban:
Anda dapat melakukan:
Hanya ada satu stdin, karena hanya ada satu file descriptor 0.
kependekan dari:
Dan:
adalah:
Anda harus memutuskan apa yang akan dibuka pada deskriptor file 0.
Adalah:
Di mana
123
deskriptor file ke pipa, dan secara paralel, bash berjalanecho foo
di proses lain dengan stdout dialihkan ke ujung pipa yang lain.Setelah Anda memberikan nama file
cat
,cat
tidak lagi membaca dari stdin. Anda membutuhkan:Atau:
(
-
adalah untukcat
membaca dari stdin).sumber
cat <<EOF
tidak persis sama dengancat /dev/fd/0...
: dalam kasus terakhircat
melihat nama file dan melakukan buka.cat
baca dari argumennyafd
0 , seolah-olah melewati argumen-
atau/dev/fd/0
(meskipun di Linux (dan hanya Linux), pembukaan/dev/fd/0
tidak persis seperti menduplikasi file descriptor 0)./dev/fd/3 3<< E1
konstruk dan sekarang saya bertanya-tanya apa sebenarnya item di bawah / dev / fd /. Saya pikir mereka entah bagaimana tampak ajaib setelah proses membuka file di suatu tempat di sistem file dengan pengecualian 1 dan 2 yang ada secara default untuk setiap proses. Tetapi dalam contoh Anda, Anda menggunakan deskriptor file 3 dan 4 yang tidak terhubung ke file nyata kecuali untuk pengalihan input. Saya tidak dapat memahaminya dalam model mental saya deskriptor file. Bagaimana jika proses ingin membuka file lain, apakah ia tahu harus menggunakan fd 5? Apakah fds harus menjadi 3, 4, 5 .. atau dapat berupa apa saja?