1. 通过read
和字符串输入重定向here string<<<
实现
给一个文本文件input.txt
,如下:
LYS PG 2008 06 01 00 01 34.200
LYS SG 2008 06 01 00 01 36.800
BAY PG 2008 06 01 00 01 34.800
现在需要逐行抽取每一行的前两个字段(以空格为分隔符)并赋值给两个变量,后续进行两个变量相关的commands,当然可以使用awk
一个变量一个变量的实现,同时也可以通过同时多个变量赋值的形式实现。
直接上例子:
for line in `cat input.txt`
do
str1=`echo $line | awk '{print $1,$2}'`
read var1 var2 <<< $str1
# command 1
# ...
done
NOTE: 通过管道线
|
与read
并不能实现,原因是管道线实际上是一个子进程,而子进程的变量无法传回父进程
- 上述过程似乎绕了一个弯,但当要抽取的变量较多时,上述实现过程可以使得代码更简洁。
网友评论