Mengapa perintah md5sum <<< 'ddd'
(keluaran:) d6d88f2e50080b9602da53dac1102762 -
benar, dan md5sum << 'ddd'
tidak?
Apa <<<
artinya
Mengapa perintah md5sum <<< 'ddd'
(keluaran:) d6d88f2e50080b9602da53dac1102762 -
benar, dan md5sum << 'ddd'
tidak?
Apa <<<
artinya
Jawaban:
The <<<
dimulai “di sini string”: string yang diperluas dan diumpankan ke stdin program. (Dalam kasus Anda, ekspansi tidak banyak terjadi.) Ini setara dengan ini:
echo ddd | md5sum
Di sisi lain, <<
mulai dokumen di sini. Semua baris berikut hingga satu yang mengandung penanda ddd
akan terdiri dari input program. (Anda harus menggunakan penanda yang tidak mungkin muncul dalam data Anda.) Anda dapat mencapai efek yang sama seperti di atas seperti ini:
md5sum <<END
ddd
END
Ada satu perbedaan antara <<END
dan <<'END'
: Tanpa tanda kutip, variabel apa pun, urutan keluar, dll. Dalam dokumen di sini akan diperluas seperti biasa.
<<<
memperkenalkan string di sini : string setelah <<<
dilewatkan sebagai input ke perintah. Ini berasal dari port Byron Rakitzis rc
(shell Plan 9) ke Unix, dan juga hadir dalam zsh, ksh93 dan bash.
<<
memperkenalkan dokumen di sini : baris berikutnya dari skrip shell dilewatkan sebagai input ke perintah, dan string setelahnya <<
adalah terminator. Di sini dokumen berfungsi di semua cangkang Bourne-style (Bourne, POSIX, ash, bash, ksh, zsh, ...), shell-C-style (csh, tcsh), dan shell Plan 9 (rc, es).
<<<
bukan ksh
ekstensi, jalannya adalah rc
-> zsh
-> ksh93
-> bash
( ksh
catatan rilis mengakui untuk sekali meminjam fitur dari zsh
). <<
juga bekerja di rc
kerang gaya
rc
dan zsh
<<<
meskipun itu rc
tidak termasuk karakter baris baru dan tidak menggunakan file temp (menggunakan pipa dan proses tambahan memberi makan setidaknya di port ke Linux).
<<<
berasal dari port Unix rc
karena tidak terlihat seperti Plan9 rc
memilikinya.
rc
,<<<
(suka<<
) menggunakan file sementara sehingga dapat digunakan oleh perintah yanglseek
stdin mereka.