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

  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • Feel The Electricity!

    Feel The Ele

    20 ŞUBAT 2010
  • LiteralMSPaint

    LiteralMSPai

    27 EKİM 2010