(2 risposte)
Chiuso 9 mesi fa.
Come eseguire lo script bash con i parametri:
./foo.sh a b c
Quando è compresso (ad es. usando xz
).
xzcat foo.sh | bash <<how_to_supply_here_parameters?>>
Caso d'uso specifico:
Ho prodotto rmlint.sh
molto grande file e archiviarlo compresso:
time rmlint -o sh:stdout -c sh:hardlink|tee >( xz > rmlint.sh.xz )
Quindi eseguirei normalmente
./rmlint.sh -d -x -p
Tuttavia, il file è troppo grande per essere decompresso. Pertanto mi piacerebbe fare lo stesso collegandolo a bash:
xzcat rmlint.sh.xz | bash ...
Risposta accettata:
Dovresti usare -s
opzione e --
per separare gli argomenti che vuoi passare:
echo 'echo "[email protected]"' | sh -s 3 4 5
echo 'printf "{%s}" "$0"; printf " {%s}" "[email protected]"; echo' |
sh -s -- -d -x -p --foo=bar
{sh} {-d} {-x} {-p} {--foo=bar}
Questo dovrebbe funzionare con qualsiasi shell POSIX, non solo bash
. Da susv4:
-s
Leggi i comandi dallo standard input.
Se non ci sono operandi e il -c
opzione non è specificata, il -s
si assume l'opzione.