スクリプトが含まれているURL "http://mywebsite.com/myscript.txt"にファイルがあるとします。
#!/bin/bash
echo "Hello, world!"
read -p "What is your name? " name
echo "Hello, ${name}!"
そして、最初にファイルに保存せずにこのスクリプトを実行したいと思います。どうすればよいですか?
今、私は構文を見てきました:
bash < <(curl -s http://mywebsite.com/myscript.txt)
しかし、これをファイルに保存して実行した場合のようには動作しません。たとえば、readlineは機能せず、出力は次のようになります。
$ bash < <(curl -s http://mywebsite.com/myscript.txt)
Hello, world!
同様に、私は試しました:
curl -s http://mywebsite.com/myscript.txt | bash -s --
同じ結果。
もともと私は次のような解決策を持っていました:
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
しかし、これはずさんなようで、私はよりエレガントな解決策が欲しいです。
URLからのシェルスクリプトの実行に関するセキュリティの問題は承知していますが、今はすべて無視します。
cmd <<foo
ほとんどのシェルのヒアドキュメント構文であり、おそらくあなたが望んでいるものではありません。
mktemp
、独自のソリューションをロールするのではなく、おそらく使用する必要があります