In a Linux shell how can I process each line of a multiline string?

后端 未结 6 673
情深已故
情深已故 2021-01-31 17:24

While in a Linux shell I have a string which has the following contents:

cat
dog
bird

and I want to pass each item as an argument to another fu

6条回答
  •  渐次进展
    2021-01-31 18:21

    Use this (it is loop of reading each line from file file)

    cat file | while read -r a; do echo $a; done
    

    where the echo $a is whatever you want to do with current line.

    UPDATE: from commentators (thanks!)

    If you have no file with multiple lines, but have a variable with multiple lines, use

    echo "$variable" | while read -r a; do echo $a; done
    

    UPDATE2: "read -r" is recommended to disable backslashed (\) chars interpretation (check mtraceur comments; supported in most shells). It is documented in POSIX 1003.1-2008 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html

    By default, unless the -r option is specified, shall act as an escape character. .. The following option is supported: -r - Do not treat a character in any special way. Consider each to be part of the input line.

提交回复
热议问题