GNU/Linux >> Linux Esercitazione >  >> Linux

Come impostare i parametri quando Pipe Bash Script su Bash?

Questa domanda ha già risposte qui :Come passare l'argomento allo script che viene immesso in bash

(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.


Linux
  1. In Bash, quando alias, quando script e quando scrivere una funzione?

  2. Come eseguire il debug di uno script Bash?

  3. Come impostare Bash per eseguire *.exe con Mono?

  4. Come chiamare una funzione Bash nello script Bash all'interno di Awk?

  5. Includere condizionatamente uno stage di pipe in uno script Bash?

Usa questo utile script Bash quando osservi le stelle

Come eseguire uno script Bash {7 metodi}

Come scrivere uno script Bash con esempi

Come eseguire uno script Bash

Come impostare la variabile d'ambiente in Bash

Come posso controllare la sintassi di uno script Bash senza eseguirlo?