Bash:读入多个局部范围变量

时间:2014-06-02 09:55:34

标签: bash

根据这个答案:https://stackoverflow.com/a/1952480/582917

我可以读入并因此分配多个变量。

但是我希望这些变量是bash函数的本地变量,因此它不会污染全局范围。

有没有办法做类似的事情:

func () {
    local read a b <<< $(echo 123 435)
    echo $a
}
func
echo $a

以上不起作用。阅读局部变量的好方法是什么?

2 个答案:

答案 0 :(得分:11)

你几乎就在那里:你只需要将变量定义为local,但事先将其定义为read声明:

func () {
     local a b
     read a b <<< $(echo 123 435)
     echo $a
}

测试

$ func 
123
$ echo $a
$

答案 1 :(得分:4)

只需将变量声明为一行上的本地变量,并在单独的行中使用它们:

$ a=5
$ func() {
    local a b
    read a b <<< "foo bar"
    echo $a
}
$ func
foo
$ echo $a
5