首页 > 解决方案 > 将字段分配给变量 - Bash

问题描述

假设我有一个带有管道分隔符的字符串:

str="1|2|3|4"

我希望将它们分配给特定的变量。

var_a=1
var_b=2
var_c=3
var_d=4

我这样做是这样的:

var_a="`echo $str | cut -d'|' -f1`"
var_b="`echo $str | cut -d'|' -f2`"
var_c="`echo $str | cut -d'|' -f3`"
var_d="`echo $str | cut -d'|' -f4`"

这可以有效地完成吗?请建议。

标签: bashunix

解决方案


最好使用数组来存储单独的分隔值:

str="1|2|3|4"
IFS='|' read -ra arr <<< "$str"

#examine array values
declare -p arr

declare -a arr='([0]="1" [1]="2" [2]="3" [3]="4")' 

要遍历数组,请使用:

for i in "${arr[@]}"; do echo "$i"; done

1
2
3
4

推荐阅读