Apakah ada manfaat nyata menggunakan bash -c 'some command'
lebih dari menggunakanbash <<< 'some command'
Mereka tampaknya mencapai efek yang sama.
bash
here-string
yosefrow
sumber
sumber
bash -c '...'
akan bekerja pada cangkang yang tidak memiliki herestrings. Anda mengasumsikan bahwa bash akan dipanggil dalam bash shell tetapi ini tidak akan selalu menjadi masalah.Jawaban:
bash -c 'some command'
mempertahankan akses ke input standar pemanggil, jadiread
atau perintah membaca dari input standar akan bekerja secara normal.bash <<< 'some command'
mengganti input itu dengan jalur yang dilewati, jadibash -c cat
danbash <<< cat
lakukan hal yang berbeda.Di sisi lain, Anda dapat menggunakan fitur itu untuk memberikan input standar Anda sendiri untuk digunakan
$'...'
, jika Anda sangat berhati-hati:Saya tidak ingin bergantung pada itu, tapi kadang-kadang bisa nyaman.
bash -c
juga memungkinkan argumen untuk diteruskan ke skrip, dan$0
ditetapkan:akan diatur
$1
keabc
dan$2
kedef
dalamsome command
.sumber
bash -c
yang disebutkan-c
, AFAIK. Tidak sepenuhnya sia-sia, karena dapat membantu melacak mereka.bash <<< 'script'
kesalahan terlihat seperti yang ada di skrip induk;bash -c 'script'
yang tidak. Anda bahkan dapat label mereka:bash -c 'script' label
.bash <<< 'echo $1' /dev/stdin foo
berfungsi juga, dan cetakfoo
. Padahal pengaturannya$0
agak lebih terbatas.bash <<< 'echo "$1"' /dev/stdin foo
tidak selalu berhasil. Saya mulaibash <<< 'echo "$1"' -s foo
bekerja.