2016-11-08 20 views
1

wget出力をカールしています。すべての変数が正しく正しい値終了コードで置き換えられている端末からそれを実行すると、すべての変数が正しく を交換し、ステータスコード127に加えて、エラーメッセージ "であるれるサブシェルにおけるスクリプト内にそれを実行0wgetをカールにパイプする

wget -O - $DOWNLOAD_URL | curl -H "Authorization:token $TOKEN" -H "Accept:application/vnd.github.v3+json" -H "Content-Type:application/zip" --data-binary @- "https://uploads.github.com/repos/myorg/myrepo/releases/$RELEASE_ID/assets?name=$NAME.zip" 
echo $? # 0 

ありますそのようなファイルやディレクトリはありません "

$(wget -O - $DOWNLOAD_URL | curl -H "Authorization:token $TOKEN" -H "Accept:application/vnd.github.v3+json" -H "Content-Type:application/zip" --data-binary @- "https://uploads.github.com/repos/myorg/myrepo/releases/$RELEASE_ID/assets?name=$NAME.zip") 
echo $? # 127 

手掛かりがありますか?

答えて

1

$(command)command substitutionの構文です。これはコマンドを実行し、出力をコマンドラインに戻すことを意味します。これは通常、引数として使用されます。あなたのケースでは

printf "%3.2f" $(some command) 

あなたがその前のコマンドを持っていないので、それはシェルコマンドとしてcurlコマンドの出力を実行しようとします。したがって、ダウンロードしているWebページが有効なシェルコマンドでない限り、出力を実行しようとするとエラーが発生します。

あなただけのサブシェルでコマンドを実行しますが、コマンド置換をしない、ちょうど$ずに括弧を使用する場合:

(wget -O - $DOWNLOAD_URL | curl -H "Authorization:token $TOKEN" -H "Accept:application/vnd.github.v3+json" -H "Content-Type:application/zip" --data-binary @- "https://uploads.github.com/repos/myorg/myrepo/releases/$RELEASE_ID/assets?name=$NAME.zip") 
+0

おかげで@Barmarが - 最後に、それは私がサブシェルを必要としなかったことが判明;-)しかし、今私は違いを知っている – szydan

関連する問題