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