Oje*_* G. 2 linux bash shell curl
我有一个文本文件,其中包含 curl 调用。它们都由换行符分隔,这有助于我相应地逐行读取文件。我的问题是我不确定如何触发 curl 调用来执行。现在它的行为是像打印另一串字符一样打印到屏幕上?
data.txt 示例:
curl -X GET "https://www.google.com"
curl -X GET "https://www.facebook.com"
Run Code Online (Sandbox Code Playgroud)
我的脚本:
#!/bin/sh
IFS=$'\n'
while read -r line
do
echo $line
makingCurlCall=$(echo "$line")
echo "$makingCurlCall"
done < "data.txt"
Run Code Online (Sandbox Code Playgroud)
它只会给出行的输出,而不是实际进行 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"
Run Code Online (Sandbox Code Playgroud)
您没有执行curl
从输入文件读取的行中包含的命令。你可以通过改变这一行来做到这一点:
makingCurlCall=$(echo "$line") => this simply displays the command and not execute it
Run Code Online (Sandbox Code Playgroud)
到
makingCurlCall=$(eval "$line")
Run Code Online (Sandbox Code Playgroud)
或者
makingCurlCall=$("$line")
Run Code Online (Sandbox Code Playgroud)
eval
如果字符串中包含的命令具有任何需要由 shell 解释的元字符,则更合适。例如>
,<
、 和$
。
尝试用这个稍微修改过的版本替换您的脚本
#!/bin/sh
IFS=$'\n'
while read -r line
do
echo $line
$line
done < "data.txt"
Run Code Online (Sandbox Code Playgroud)
所有的echo
操作都是将其参数输出到标准输出(这意味着在您的情况下将它们显示在屏幕上)。
扩展变量(如上$line
)实际上会将其作为命令执行。由于文件中的行已正确引用,因此它应该可以工作。
归档时间: |
|
查看次数: |
10758 次 |
最近记录: |