Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

bash shell script transmission variable value space processing, how to space data it

bash shell script transmission variable value space processing, how to space data it

**#FileList. list.txt Delivery list belowt**
  $1          $2           $3
xxxx1.com_1 Hello_2 Hello_3 - Hello
xxxx2.com_1 Hello_2 Hello_3 - Hello


get_list() {
now_list=${1} #Pass list

while read -r line; do #Circular reading
now_list_url=$(echo "${line}"|awk -F ' ' '{print $1}') #url variable1
now_list_keyword=$(echo "${line}"|awk -F ' ' '{print $2}') #keyword variable2
now_list_title=$(echo "${line}"|awk -F ' ' '{print $3}') #title variable3

#print
echo "url:${now_list_url}"
result:xxxx1.com_1

echo "keyword:${now_list_keyword}"
result:Hello_2

echo "title:${now_list_title}"

result:Hello_3    #Due to the empty grid of the transmission variable 3
result:Hello_3 - Hello    #And want to be correct
done < "${now_list}"
}

#Run
get_list list.txt`

Transfer variable 3 due to space errors:Hello_3
I want correct transmission variables 3 due to space and finally the correct result:Hello_3 – Hello

#And here is because the transmission variable is incomplete,The result I finally need is the value of the value of the output complete variable 3 in the value of the complete variable3 = "Hello_3 – hello"
Because of work needs, a lot of list processing, I will save the variable value in the text
How should I deal with it

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

thanks

>Solution :

If I understand what you’re trying to do, you should let read split the fields, instead of using awk:

while read -r now_list_url now_list_keyword now_list_title; do

    echo "url:${now_list_url}"
    # result: xxxx1.com_1

    echo "keyword:${now_list_keyword}"
    # result: Hello_2

    echo "title:${now_list_title}"
    # result: Hello_3 - Hello

done < "${now_list}"

Since three variables were given to read, it’ll try to split the line into three fields. When there are more than three space-separated things in the line, all the extra gets put in the last variable. See BashFAQ #1: "How can I read a file (data stream, variable) line-by-line (and/or field-by-field)?" for more information.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading