在 bash 脚本中使用 curl 时保留换行符

Preserving newlines when using curl in a bash script

我目前正在编写一个脚本,最终将从 MLB 的比赛日数据中解析一些棒球运动员的 ID 号码。到目前为止,我已经将脚本设置为将今天的日期输入 URL 并接受团队名称作为命令行参数。

下一步是将 URL 传递给 curl 以获取今天的比赛列表,并使用带有球队名称的 grep 找到合适的比赛。

当我在命令行上写这个时:

curl -s http://gd2.mlb.com/components/game/mlb/year_2017/month_05/day_20/ | grep tormlb

有效。

然而,当我在我的脚本中这样写时:

mlb_dir=$(curl -s $url | grep $team)
echo $mlb_dir

我返回的是乱七八糟的 HTML,没有任何换行符。 $url 等同于上面代码块中的 url 并且 $team 设置为 "tormlb" 就像上面一样。

我很困惑如何在使用命令行时获得我想要的结果,但在我 运行 我的脚本时却得不到。我哪里出错了?

当您将变量传递给命令时,变量会扩展,然后按空格拆分为参数。 echo 然后输出由空格分隔的参数。

为确保变量被视为单个参数,请将其用双引号引起来。您还应该为代码中使用的其他变量执行此操作。

mlb_dir=$(curl -s "$url" | grep "$team")
echo "$mlb_dir"

更多信息:http://tldp.org/LDP/abs/html/quotingvar.html