GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit parametry, když Pipe Bash Script to Bash?

Tato otázka zde již obsahuje odpovědi :Jak předat argument skriptu, který je vstupem do bash

(2 odpovědi)
Uzavřeno před 9 měsíci.

Jak spustit bash skript s parametry:

./foo.sh a b c

Když je komprimován (např. pomocí xz ).

 xzcat foo.sh | bash <<how_to_supply_here_parameters?>>

Konkrétní případ použití:

Vytvořil jsem velmi velký rmlint.sh soubor a uložte jej komprimovaný:

time rmlint -o sh:stdout -c sh:hardlink|tee >( xz > rmlint.sh.xz )

Proto bych normálně provedl

./rmlint.sh -d -x -p

Soubor je však příliš velký na to, aby jej bylo možné dekomprimovat. Proto bych rád udělal to samé tím, že bych to převedl do bash:

xzcat rmlint.sh.xz | bash ...

Přijatá odpověď:

Měli byste použít -s možnost a -- k oddělení argumentů, které chcete předat:

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}

To by mělo fungovat s jakýmkoli shellem POSIX, nejen s bash . Ze susv4:

-s Číst příkazy ze standardního vstupu.

Pokud neexistují žádné operandy a -c volba není specifikována, -s se předpokládá možnost.


Linux
  1. Jak nastavit Bash, aby spouštěl *.exe s Mono?

  2. Jak přidat nové řádky do proměnných ve skriptu Bash?

  3. Jak volat funkci Bash ve skriptu Bash uvnitř Awk?

  1. Bash Script - Jak číst uživatelský vstup

  2. Jak zvýraznit Bash skripty ve Vimu?

  3. Jak předat parametry skriptu Bash?

  1. V Bash, kdy alias, kdy skript a kdy napsat funkci?

  2. Jak ladit Bash skript?

  3. Podmíněně zahrnout fázi potrubí do skriptu Bash?