Czy jest jakaś realna korzyść z używania bash -c 'some command'
ponad używaniebash <<< 'some command'
Wydaje się, że osiągają ten sam efekt.
bash
here-string
Yosefrow
źródło
źródło
bash -c '...'
będzie działać w skorupach, które nie mają znaków Zakładasz, że bash zostanie wywołany w powłoce bash, ale nie zawsze tak będzie.Odpowiedzi:
bash -c 'some command'
zachowuje dostęp do standardowego wejścia osoby dzwoniącej, więcread
polecenia odczytywane ze standardowego wejścia będą działać normalnie.bash <<< 'some command'
zastępuje wejściowy z linii były przekazywane w, więcbash -c cat
ibash <<< cat
robić różne rzeczy.Z drugiej strony możesz skorzystać z tej funkcji, aby zapewnić własne standardowe dane wejściowe do wykorzystania
$'...'
, jeśli jesteś bardzo ostrożny:Nie chciałbym na tym polegać, ale czasami może być to wygodne.
bash -c
umożliwia także przekazywanie argumentów do skryptu i$0
ustawianie:ustawi
$1
sięabc
i$2
dodef
wewnątrzsome command
.źródło
bash -c
wspominają-c
AFAIK. Nie do końca bezcelowe, ponieważ może to pomóc w ich wyśledzeniu.bash <<< 'script'
błędy wyglądają jak te w skrypcie nadrzędnym;bash -c 'script'
te nie. Można nawet opisać je:bash -c 'script' label
.bash <<< 'echo $1' /dev/stdin foo
też działa i drukujefoo
. Chociaż ustawienie$0
jest nieco bardziej ograniczone.bash <<< 'echo "$1"' /dev/stdin foo
nie zawsze działa. Jabash <<< 'echo "$1"' -s foo
do pracy