[20210930]IFS= read -r line.txt
--//放假前看了一下如标题的写法,不知道这个-r的主要作用.从网上抄的例子验证看看.
$ echo " a b c " | { IFS= read -r line; echo "[$line]" ; }
[ a b c ]
$ echo " a b c " | { read -r line; echo "[$line]" ; }
[a b c]
--//很容易混淆,实际上IFS=,临时取消IFS设置,IFS缺省空格,tab,回车三个字符.
--//在IFS=的情况下,read -r 可以保持前面的空格.
$ echo -n "$IFS" |xxd -c 16 -g 1
0000000: 20 09 0a
$ echo " a b c " | { IFS= read -r line; echo "[$line]" ; }
[ a b c ]
$ echo " a b c " | { read -r line; echo "[$line]" ; }
[a b c]
$ echo " a b c " | { read line; echo "[$line]" ; }
[a b c]
--//可以发现对于中间的空格无效.当然-r还有独特作用.例子:
$ echo " a b\t c " | { IFS= read line; echo "[$line]" ; }| xxd -c 16 -g 1
0000000: 5b 20 20 20 20 61 20 62 74 20 63 20 20 20 5d 0a [ a bt c ].
--//有点不理解直接删除\.
$ echo " a b\t c " | { IFS= read -r line; echo "[$line]" ; }| xxd -c 16 -g 1
0000000: 5b 20 20 20 20 61 20 62 5c 74 20 63 20 20 20 5d [ a b\t c ]
0000010: 0a
--//-r 保持\不解析.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2794819/ ,如需转载,请注明出处,否则将追究法律责任。