2017-01-17 22 views
0

私はcurl呼び出しを内部に含むテキストファイルを持っています。それらはすべて改行で区切られており、ファイルを1行ずつ読み込むのに役立ちます。私の問題は、カールコールをどのように実行させるかわからないということです。今のところ、その動作は単に文字列のように画面に表示されますか? data.txtをのファイルから読み込んだcurlコマンドを実行する

例:

curl -X GET "https://www.google.com" 
curl -X GET "https://www.facebook.com" 

マイスクリプト:

#!/bin/sh 
IFS=$'\n' 
while read -r line 
do 
    echo $line 
    makingCurlCall=$(echo "$line") 
    echo "$makingCurlCall" 
done < "data.txt" 

それだけのラインの出力を与え、実際にカール呼び出しを行うことはありません。

出力:

curl -X GET "https://www.google.com" 
curl -X GET "https://www.google.com" 
curl -X GET "https://www.facebook.com" 
curl -X GET "https://www.facebook.com" 
+4

'data.txt'は既にあなたが望むスクリプトのようです。 'bash data.txt'だけ実行してください。 – chepner

+0

ありがとうございます。同意しましたが、私はSEDでこれらの呼び出しを別のスクリプトで行うと、いくつかの衛生設備を整備していきます。 –

答えて

1

はこの少し変更したバージョン

#!/bin/sh 
IFS=$'\n' 
while read -r line 
do 
    echo $line 
    $line 
done < "data.txt" 

でスクリプトを交換してみてくださいすべてのechoん(あなたのケースでは、画面上でそれらを示す意味)を標準出力に出力引数をあります。

変数を展開すると(上記の$lineなど)実際にはコマンドとして実行されます。あなたのファイルの行が適切に引用されているので、それはうまくいくはずです。

2

入力ファイルから読み取った行に含まれているcurlコマンドを実行していません。文字列に含まれるコマンドがする必要がある任意のメタ文字が含まれている場合

makingCurlCall=$(echo "$line") => this simply displays the command and not execute it 

makingCurlCall=$("$line") 
makingCurlCall=$(eval "$line") 

または

evalより適切です:あなたは、この行を変更していることを行うことができますシェルによって解釈される。例えば、>,<、および$です。

関連する問題