curl を使用してダウンロードしたスクリプトにパラメータをパイプして、スクリプトに $1、$2 などとして受け入れさせることはできますか?
$ curl mysite.com
echo hello $1
$ echo world | curl mysite.com
echo hello $1
$ echo world | $(curl mysite.com)
hello $1
curl
からにテキストをパイプできますsh
。
curl http://example.com/ | sh /dev/stdin world
スクリプト名は、明らかに/dev/stdin
を持たないプラットフォームには移植できません/dev/stdin
。あなたはそれを次のようなもので回避することができます
sh -c "$(curl http://example.com/)" _ world
の後の最初のパラメータは にsh -c '...'
入る$0
ため、そのためにダミー パラメータ_
が提供されます。
いずれにせよ、URL に完全な自信がない限り、これは非常に安全ではありません。たとえば、http: //blog.classicalcode.com/2012/11/curl-pipe-sh-exploit-proof-of-concept/を参照してください。
を使用せずにテストするcurl
には、単純に に置き換えるcurl http://example.com/
かecho 'echo "hello $1"'
、標準入力で静的文字列を指定するだけです。
sh /dev/stdin world <<<'echo "hello $1"'
(シェルが Bash でない場合、または 1990 年代半ばに立ち往生していて Bash 2.x と Debian Potato がホット ニュースである場合は、<<<'here string'
を通常のhere ドキュメントに置き換えることができます。)