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

  • jcortes187

    jcortes187

    24 Mart 2006
  • kremosakhaz

    kremosakhaz

    25 AĞUSTOS 2006
  • UberFacts

    UberFacts

    26 EKİM 2013