Saya perlu untuk menjalankan script dengan pipa melalui bash
dengan wget
(bukan menjalankannya langsung dengan bash).
$ wget -O - http://example.com/my-script.sh | bash
Ini tidak berfungsi karena skrip saya memiliki read
pernyataan di dalamnya. Untuk beberapa alasan ini tidak berfungsi saat mem-pip ke bash:
# Piping to bash works in general
$ echo 'hi'
hi
$ echo "echo 'hi'" | bash
hi
# `read` works directly
$ read -p "input: " var
input: <prompt>
# But not when piping - returns immediately
$ echo 'read -p "input: " var' | bash
$
Alih-alih meminta input:
dan meminta nilai sebagaimana mestinya, perintah baca hanya akan dilewati bash
.
Adakah yang tahu bagaimana saya bisa mengirim script read
ke pipa bash
?
Substitusi proses akan melakukan apa yang Anda inginkan:
bash <(wget ...)
Yang mengatakan, saya harus mempertanyakan motivasi Anda di sini. Jika Anda mengontrol server web (dan menggunakan https) maka mungkin ini masuk akal. Tapi menjalankan skrip dari internet blind sangat berisiko.
sumber
just running a script from the internet blind is very risky
- ya kita tahu itu berisiko, tetapi orang dapat memilih untuk mempercayai skrip dari organisasi tertentu. Lihat diskusi dalam komentar pada jawaban @ Xen2050.Apakah ada yang salah dengan:
?
sumber
/tmp
, banyak program menggunakan file temp. Saya akan segera menjalankan skrip yang diunduh dengan segera tanpa melihatnya terlebih dahulu ...