Eu preciso executar um script, canalizando-o através bash
de wget
(em vez de executá-lo diretamente com bash).
$ wget -O - http://example.com/my-script.sh | bash
Não está funcionando porque meu script possui read
instruções. Por alguma razão, eles não funcionam ao canalizar para o 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
$
Em vez de solicitar input:
e pedir um valor como deveria, o comando read é ignorado bash
.
Alguém sabe como eu posso canalizar um script read
para bash
?
A substituição do processo fará o que você deseja:
bash <(wget ...)
Dito isto, tenho que questionar sua motivação aqui. Se você controla o servidor da web (e usa https), talvez isso faça sentido. Mas apenas executar um script a partir da Internet é muito arriscado.
fonte
just running a script from the internet blind is very risky
- sim, sabemos que é arriscado, mas as pessoas podem optar por confiar em scripts de certas organizações. Veja a discussão nos comentários da resposta do @ Xen2050.Existe algo errado com:
?
fonte
/tmp
, muitos programas usam arquivos temporários. Eu seria Leary de executar quaisquer scripts baixado imediatamente sem dar uma olhada primeiro ...