bash shell逐行读取行

时间:2020-01-09 10:37:26  来源:igfitidea点击:

如何在UNIX/Linux/BSD Bash Shell下逐字段读取文件?
我的示例输入数据文件如下:

device1,deviceType,major,minor,permissions
device2,deviceType,major,minor,permissions
. .
deviceN,deviceTypeN,major,minor,permissions

对于每一行,我需要按如下所示构造并执行一个shell命令:

/path/to/deviceMaker --context= -m $permissions $device2 $deviceType $major $minor

您可以将while循环与read命令,内部字段分隔符(IFS)和HERE STRINGS一起使用,如下所示:

#!/bin/bash
input=/path/to/data.txt
[ $# -eq 0 ] && { echo "Usage: ##代码## arg1"; exit 1; }
arg=""
cmd=/path/to/deviceMaker
while read -r line
do
	IFS=, read -r f1 f2 f3 f4 f5 <<<"$line"
        # quote fields if needed 
	$cmd --context="$arg" -m $f5 $f1 $f2 $f3 $f4
done <"$input"