SORU
20 NİSAN 2011, ÇARŞAMBA


URL bash komut dosyasını yürütün

URL, "" bu komut dosyası içerir: . http://mywebsite.com/myscript.txt bir dosya var

#!/bin/bash
echo "Hello, world!"
read -p "What is your name? " name
echo "Hello, ${name}!"

Ve ilk bir dosyaya kaydetmeden bu komut çalıştırmak istiyorum. Bunu nasıl yapabilirim?

Şimdi, sözdizimi gördüm:

bash < <(curl -s http://mywebsite.com/myscript.txt)

Ama bu bir dosyaya kaydedilir ve daha sonra idam, olduğu gibi yürümüyor. Örneğin atayarak çalışmıyor, çıktı sadece

$ bash < <(curl -s http://mywebsite.com/myscript.txt)
Hello, world!

Benzer şekilde, denedim:

curl -s http://mywebsite.com/myscript.txt | bash -s --

Aynı sonuçları ile.

Aslında böyle bir çözüm vardı:

timestamp=`date  %Y%m%d%H%M%S`
curl -s http://mywebsite.com/myscript.txt -o /tmp/.myscript.${timestamp}.tmp
bash /tmp/.myscript.${timestamp}.tmp
rm -f /tmp/.myscript.${timestamp}.tmp

Ama bu özensiz görünüyor ve daha şık bir çözüm istiyorum.

Güvenlik sorunları bir URL bir kabuk ile ilgili çalışan farkındayım, ama şu an için bütün bunları görmezden gelelim.

CEVAP
20 NİSAN 2011, ÇARŞAMBA


source <(curl -s http://mywebsite.com/myscript.txt)

işe yaramalı. Alternatif olarak, standart giriş Yönlendirme Olmadan da gayet iyi, ve <(command) sözdizimi sağlar sadece bir yol yürütmek için bir dosya adı alır yönlendirme olan seninki, ilk yönlendirme devre dışı bırakın.

bash <(curl -s http://mywebsite.com/myscript.txt)

echo <(cat /dev/null) çıkış bakarsanız daha net olabilir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007
  • Tube Time

    Tube Time

    14 Mayıs 2013
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007