我有一个文本文件,其中包含curl调用。它们都被新换行符分开,这有助于我在逐行读取文件时。我的问题是我不知道如何触发curl调用来执行。现在它的行为是打印到屏幕,就像它只是另一串字符?
data.txt示例:
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调用。
输出:
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"
答案 0 :(得分:4)
您没有执行从输入文件中读取的行中包含的curl
命令。你可以通过改变这一行来做到这一点:
makingCurlCall=$(echo "$line") => this simply displays the command and not execute it
到
makingCurlCall=$(eval "$line")
或
makingCurlCall=$("$line")
如果字符串中包含的命令具有需要由shell解释的任何元字符,则 eval
更合适。例如,>
,<
和$
。
答案 1 :(得分:1)
尝试使用此略微修改的版本替换您的脚本
>>> test=bootstrapping(range(1,6))
>>> test.CI()
('Lower confidence:', 1.7676140938359097, 'Upper confidence:', 4.2427859061640962)
>>>
所有#!/bin/sh
IFS=$'\n'
while read -r line
do
echo $line
$line
done < "data.txt"
都会将其参数输出到标准输出(这意味着在您的情况下在屏幕上显示它们)。
扩展变量(如上面的echo
)实际上会将其作为命令执行。由于文件中的行已正确引用,因此应该可以正常工作。