首先,让我说我对Bash脚本非常新。我试图为我的问题寻找解决方案,但找不到任何对我有用的方法 我们假设我想使用bash来解析一个如下所示的文件:
variable1 = value1
variable2 = value2
我使用以下代码逐行拆分文件:
cat /path/to/my.file | while read line; do
echo $line
done
从$line
变量我想创建一个我想用=
作为分隔符拆分的数组,这样我就可以从数组中获取变量名和值了:
$array[0] #variable1
$array[1] #value1
最好的方法是什么?
答案 0 :(得分:4)
将IFS设置为' ='为了在你的行中的=符号上拆分字符串,即:
cat file | while IFS='=' read key value; do
${array[0]}="$key"
${array[1]}="$value"
done
您也可以使用-a参数指定要写入的数组,即:
cat file | while IFS='=' read -a array; do
...
done
bash版本取决于。
后代的完全错误的答案:
将参数-d =
添加到read
语句中。然后你可以这样做:
cat file | while read -d = key value; do
$array[0]="$key"
$array[1]="$value"
done
答案 1 :(得分:3)
while IFS='=' read -r k v; do
: # do something with $k and $v
done < file
IFS是'内部字段分隔符',它告诉bash将行拆分为'='符号。