GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie werden Parameter eingestellt, wenn Bash-Skript an Bash übergeben wird?

Für diese Frage gibt es hier bereits Antworten :Wie übergeben Sie ein Argument an ein Skript, das in Bash eingegeben wird

(2 Antworten)
Vor 9 Monaten geschlossen.

So führen Sie ein Bash-Skript mit Parametern aus:

./foo.sh a b c

Wenn es komprimiert ist (z. B. mit xz ).

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

Spezifischer Anwendungsfall:

Ich habe sehr große rmlint.sh erstellt Datei und speichere sie komprimiert:

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

Daher würde ich normalerweise ausführen

./rmlint.sh -d -x -p

Die Datei ist jedoch zu groß, um sie zu dekomprimieren. Daher würde ich gerne dasselbe tun, indem ich es an bash weiterleite:

xzcat rmlint.sh.xz | bash ...

Akzeptierte Antwort:

Sie sollten das -s verwenden Option und -- um Argumente zu trennen, die Sie übergeben möchten:

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}

Dies sollte mit jeder POSIX-Shell funktionieren, nicht nur mit bash . Von susv4:

-s Befehle aus der Standardeingabe lesen.

Wenn es keine Operanden gibt und das -c Option nicht angegeben ist, die -s Option angenommen werden.


Linux
  1. Wann soll in Bash ein Alias, wann ein Skript und wann eine Funktion geschrieben werden?

  2. Wie debuggt man ein Bash-Skript?

  3. Wie kann man Bash so einstellen, dass *.exe mit Mono ausgeführt wird?

  4. Eine Pipe-Stufe bedingt in ein Bash-Skript einschließen?

  5. So teilen Sie eine Zeichenfolge in Bash-Skript auf

Verwenden Sie dieses hilfreiche Bash-Skript, wenn Sie Sterne beobachten

So führen Sie ein Bash-Skript aus {7 Methoden}

So schreiben Sie ein Bash-Skript mit Beispielen

So führen Sie ein Bash-Skript aus

So setzen Sie die Umgebungsvariable in Bash

Wie überprüfe ich die Syntax eines Bash-Skripts, ohne es auszuführen?