【问题标题】:echo overwites beginning of line in a bash scriptecho 覆盖 bash 脚本中的行首
【发布时间】:2020-11-19 12:11:39
【问题描述】:

我正在尝试根据我从另一个 curl 查询中获得的变量来制定 curl 请求(只是为了检查而回显)

我分配给 $invno_list 变量的第一个 curl 查询结果是

,result,table,invno,latitude,longitude
,_result,0,16734,44.6707726,15.2820759
,_result,0,16768,44.7376213,15.2164268
,_result,0,18061,44.6654625,14.6602612

我的脚本在这里

declare -i line_number=0
for inv_line in $(echo "$invno_list" | awk -F'\\\\r\\\\n' '{print}');do
    line_size=${#inv_line} 
    if [ ! $line_number -eq 0 ] && [ $line_size -gt 1 ] #avoiding header line and empty line (last)
    then
    invno=$(echo "$inv_line" | awk 'BEGIN{FS=","}{print $4}')
    lat=$(echo "$inv_line" | awk 'BEGIN{FS=","}{print $5}')
    lon=$(echo "$inv_line" | awk 'BEGIN{FS=","}{print $6}')
    echo "invno is ${invno} lat is ${lat} and lon is ${lon}" #checking variables
    echo "curl -X GET -k -i \"${ownURL}?lat=$lat&lon=${lon}&units=metric\""
fi    
    line_number=$line_number+1
done

本次运行的结果是

invno is 16734 lat is 44.6707726 and lon is 15.2820759
&units=metric" -i "https://api.openweathermap.org/data/2.5/onecall?lat=44.6707726&lon=15.2820759
invno is 16768 lat is 44.7376213 and lon is 15.2164268
&units=metric" -i "https://api.openweathermap.org/data/2.5/onecall?lat=44.7376213&lon=15.2164268
invno is 18061 lat is 44.6654625 and lon is 14.6602612
&units=metric" -i "https://api.openweathermap.org/data/2.5/onecall?lat=44.6654625&lon=14.6602612

我希望结果是以下类型

invno is 40336 lat is 44.6777115 and lon is 15.2872734
curl -X GET -k -i "https://api.openweathermap.org/data/2.5/onecall?lat=44.6777115&lon=15.2872734&units=metric"

谁能告诉我什么是错的

【问题讨论】:

  • 看起来$inv_line 以回车符结尾。
  • 是的,我不确定问题出在哪里 - 对我来说很好。我不确定如何从这个数据集中达到他的预期输出 - 或者预期输出是如何“不正确”的

标签: bash variables


【解决方案1】:

看起来肖恩是对的,有 \r 标志谁搞砸了一切

这条线解决了这个问题

$(echo "$invno_list" | awk '{sub(/\r/,"",$NF); print}

【讨论】:

    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多