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

  • BlackBoxTV

    BlackBoxTV

    7 Mayıs 2007
  • thetrollska

    thetrollska

    2 EKİM 2009
  • YouChewBu

    YouChewBu

    26 Ocak 2009