Yanıtlar:
Aradığın şeyin -s
seçenek olduğuna inanıyorum . İle -s
betiğe argümanlar iletebilirsiniz.
Bunu açıklamak için kukla bir örnek olarak:
$ echo 'echo 1=$1' | bash -s -- Print
1=Print
Burada, stdin üzerinde sağlanan komut dosyasının konum parametresi verildiğini görebilirsiniz Print
. Betiğiniz bir -u UUID
argüman alır ve bu da kabul edilebilir:
$ echo 'echo arguments=$*' | bash -s -- -u UUID print
arguments=-u UUID print
Yani, sizin durumunuzda:
curl -fsSL http://git.io/vvZMn | bash -s -- print
Veya,
curl -fsSL http://git.io/vvZMn | bash -s -- -u UUID print
Stephen Harris'in işaret ettiği gibi, bir senaryoyu indirmek ve yürütmek, görünmeyen görme, bir güvenlik sorunudur.
Sisteminiz varsa /dev/stdin
, aşağıdakileri kullanabilirsiniz:
$ echo 'echo 1=$1' | bash /dev/stdin print
1=print
Do not bunu:
$ echo 'echo 1=$1' | bash /dev/stdin -- print
1=--
Kullanmak istiyorsanız --
, bunu yapın:
$ echo 'echo 1=$1' | bash -- /dev/stdin print
1=print
print
yapmayı umuyorsun? Çalıştırılan komutlar gösterilsin mi? Varsa, deneyinbash -x
. Not: Bucurl | bash
rutin büyük bir güvenlik deliğidir; sunucunuz bulana kadar nelerin çalıştırılacağını göremezsiniz.