我目前正在编写一个脚本,最终将从 MLB 的比赛日数据中解析一些棒球运动员的 ID 号。到目前为止,我已经设置了脚本,将今天的日期输入到 URL 中,并接受团队名称作为命令行参数。
下一步是将 URL 传递给 curl 以获取今天的比赛列表,并使用 grep 和球队名称找到合适的比赛。
当我在命令行上写下这个时:
curl -s http://gd2.mlb.com/components/game/mlb/year_2017/month_05/day_20/ | grep tormlb
Run Code Online (Sandbox Code Playgroud)
有用。
但是,当我在脚本中写下以下内容时:
mlb_dir=$(curl -s $url | grep $team)
echo $mlb_dir
Run Code Online (Sandbox Code Playgroud)
我返回的是一堆没有任何换行符的 HTML。$url 相当于上面代码块中的 url,并且 $team 被设置为“tormlb”,就像上面一样。
我很困惑如何在使用命令行时获得所需的结果,但在运行脚本时却无法获得想要的结果。有什么线索我哪里出错了吗?
当您将变量传递给命令时,该变量将被扩展,然后通过空格分割为参数。 echo然后输出用空格分隔的参数。
为了确保变量被视为单个参数,请将其用双引号引起来。您还应该对代码中使用的其他变量执行此操作。
mlb_dir=$(curl -s "$url" | grep "$team")
echo "$mlb_dir"
Run Code Online (Sandbox Code Playgroud)
更多信息:http://tldp.org/LDP/abs/html/quotingvar.html