在 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"
我目前正在编写一个脚本,最终将从 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"