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