bash -c 'some command'
mempertahankan akses ke input standar pemanggil, jadi read
atau perintah membaca dari input standar akan bekerja secara normal. bash <<< 'some command'
mengganti input itu dengan jalur yang dilewati, jadi bash -c cat
dan bash <<< cat
lakukan hal yang berbeda.
$ bash -c cat
abc
abc
^D
$ bash <<< cat
$
Di sisi lain, Anda dapat menggunakan fitur itu untuk memberikan input standar Anda sendiri untuk digunakan $'...'
, jika Anda sangat berhati-hati:
$ bash <<< $'read x y\nabc def ghi\necho $y'
def ghi
$
Saya tidak ingin bergantung pada itu, tapi kadang-kadang bisa nyaman.
bash -c
juga memungkinkan argumen untuk diteruskan ke skrip, dan $0
ditetapkan:
bash -c 'some command' sh abc def
akan diatur $1
ke abc
dan $2
ke def
dalam some command
.