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

时间:2017-05-20 21:04:16

标签: bash curl quoting

我目前正在编写一个脚本,最终将从MLB的Gameday数据中解析一些棒球运动员身份证号码。到目前为止,我已经设置了我的脚本,将今天的日期输入到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”,就像上面一样。

我很困惑如何在使用命令行时获得我想要的结果,但在运行脚本时却没有。我出错的任何线索?

1 个答案:

答案 0 :(得分:3)

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

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

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

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