Bash:将字符串拆分为数组

时间:2013-01-18 15:06:22

标签: arrays bash split

首先,让我说我对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

最好的方法是什么?

2 个答案:

答案 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将行拆分为'='符号。