Bash:将内容读入多个本地作用域变量

20

根据这个回答:https://dev59.com/43I-5IYBdhLWcg3wPFx2#1952480

我可以读入并且因此赋值多个变量。

然而我想让这些变量局部于一个Bash函数,这样就不会污染全局作用域。

有没有办法做到这样:

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

上述方法不起作用。有什么好的方法可以读取到本地变量吗?

2个回答

31

你已经接近成功了:你只需要将变量定义为 local,并且在 read 声明之前进行定义:

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

测试

$ func 
123
$ echo $a
$

6

只需在一行上声明变量为本地变量,然后在另一行上使用它们:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接