bash -c 'some command'
зберігає доступ до стандартного вводу абонента, тому read
чи зчитування команд зі стандартного вводу буде працювати нормально. bash <<< 'some command'
замінює цей вхід на рядок, що передається, так bash -c cat
і bash <<< cat
роби інші речі.
$ bash -c cat
abc
abc
^D
$ bash <<< cat
$
З іншого боку, ви можете скористатися цією функцією, щоб забезпечити власний стандартний вхід, який буде використовуватися $'...'
, якщо ви дуже обережні:
$ bash <<< $'read x y\nabc def ghi\necho $y'
def ghi
$
Я не хотів би на це покладатися, але це може бути зручно іноді.
bash -c
також дозволяє передавати аргументи до сценарію та $0
встановлювати:
bash -c 'some command' sh abc def
буде встановлений $1
в abc
і $2
до def
внутрішньої some command
.