Pertanyaan ini sudah memiliki jawaban di sini :Cara menyampaikan argumen ke skrip yang diinput ke bash
(2 jawaban)
Tutup 9 bulan yang lalu.
Linux
(2 jawaban)
Tutup 9 bulan yang lalu.
Cara menjalankan skrip bash dengan parameter:
./foo.sh a b c
Saat dikompresi (misalnya menggunakan xz
).
xzcat foo.sh | bash <<how_to_supply_here_parameters?>>
Kasus penggunaan khusus:
Saya menghasilkan rmlint.sh
yang sangat besar file dan simpan dengan kompresi:
time rmlint -o sh:stdout -c sh:hardlink|tee >( xz > rmlint.sh.xz )
Oleh karena itu saya biasanya akan mengeksekusi
./rmlint.sh -d -x -p
Namun, file terlalu besar untuk tidak dikompresi. Oleh karena itu saya ingin melakukan hal yang sama dengan menyalurkannya ke bash:
xzcat rmlint.sh.xz | bash ...
Jawaban yang Diterima:
Anda harus menggunakan -s
opsi dan --
untuk memisahkan argumen yang ingin Anda sampaikan:
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}
Ini harus bekerja dengan shell POSIX apa pun, bukan hanya bash
. Dari susv4:
-s
Baca perintah dari input standar.Jika tidak ada operan dan
-c
opsi tidak ditentukan,-s
opsi harus diasumsikan.