如何';转换为';基于对bash脚本中字符串的curl操作的变量

如何';转换为';基于对bash脚本中字符串的curl操作的变量,bash,curl,Bash,Curl,我在bash脚本方面没有实际经验,但作为一个网站项目的一部分,我正在运行一个bash脚本,通过GETHTTP检索xml(使用curl)。然后我想把它输出到一个文件中。但我只想在xml不包含特定字符串的情况下执行此操作。 我的数据供应商只允许我每6分钟执行一次GETHTTP 我能够检索xml并输出到文件,如下所示: $URL=“在此处插入获取http URL” $OUTPUT=在此处插入文件名和路径 curl-s“$URL”-o$OUTPUT 为了引入if语句来检查字符串,我将curl的输出分配给

我在bash脚本方面没有实际经验,但作为一个网站项目的一部分,我正在运行一个bash脚本,通过GETHTTP检索xml(使用curl)。然后我想把它输出到一个文件中。但我只想在xml不包含特定字符串的情况下执行此操作。 我的数据供应商只允许我每6分钟执行一次GETHTTP

我能够检索xml并输出到文件,如下所示:

$URL=“在此处插入获取http URL”

$OUTPUT=在此处插入文件名和路径

curl-s“$URL”-o$OUTPUT

为了引入if语句来检查字符串,我将curl的输出分配给一个变量,然后我可以搜索该变量:

数据=$(curl-s“$URL”)

如果[[$DATA==mystring*]]

然后是$DATA-o$OUTPUT

fi

然而,我最大的问题是,当我尝试这个方法时,每次它查看$DATA时,它都会重新运行curl,这超出了我在时间段内允许的尝试次数

如何将curl的输出分配给可以重用的变量,而无需在每次调用该变量时重新运行curl

我本以为我可以将其转换为字符串,但我的搜索结果没有任何结果,因此我担心我使用了错误的搜索词。

这应该可以:

URL="http://your.url/some/path"
OUTPUT="/path/to/output"
DATA=$(curl -s "$URL")

if echo $DATA | grep "mystring" >/dev/null
then
  echo $DATA > $OUTPUT
fi

$DATA
是一个字符串,只要
curl
调用成功(并返回文本)。然后,您只需正确操作它,即可搜索您的术语并将其输出到文件。

太好了-这很有效。我只需要它来写文件,而不是在终端窗口中回显curl输出。是否有一种写入$OUTPUT而不在终端中实际回显输出的方法?是的,如图所示。您可能看到的是grep命令的输出。对该行进行了更新。