如何 'convert' 基于 curl 操作的变量到 bash 脚本中的字符串

How to 'convert' variable based on curl operation to a string in bash script

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

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

$URL = "insert get http URL here"

$OUTPUT = insert filename and path here

curl -s "$URL" -o $OUTPUT

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

DATA=$(curl -s "$URL")

if [[ $DATA == mystring* ]]

then $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 调用成功(并且它是 returns 文本)。然后您只需要正确操作它来搜索您的术语并将其输出到文件。