将文本中的行分配给各个变量(sh或bash,不支持的数组)

时间:2014-08-08 12:43:33

标签: bash shell scripting

我使用dialog命令提示用户输入。结果是每行上的文本对应于字段的值。

我想将每一行分配回与该字段对应的变量。这样我就可以轻松构造控制流和.ini类型的文件。

因此,如果我有一个包含3个字段A,B和C的表单,$ RESULTS中的文本将是:" aaa \ nbbb \ nccc \ n"。我想要:

$varA to be 'aaa'
$varB to be 'bbb'
$varC to be 'ccc'

替代方案似乎是粘贴命令,但由于我需要在继续之前验证某些值,因此这只是部分解决方案。

2 个答案:

答案 0 :(得分:1)

使用read

{
    read a
    read b
    read c
} <<< "$RESULTS"

或使用更标准的此处文档而非此处的字符串。

{
    read a
    read b
    read c
} <<EOF
$RESULTS
EOF

答案 1 :(得分:0)

你是说这个吗?

a=$(echo -e $RESULTS | awk 'NR==1')
b=$(echo -e $RESULTS | awk 'NR==2')
c=$(echo -e $RESULTS | awk 'NR==3')

echo $a,$b,$c
aaa,bbb,ccc