![仅使用字符串格式构造 bash 数组](https://linux22.com/image/124184/%E4%BB%85%E4%BD%BF%E7%94%A8%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%A0%BC%E5%BC%8F%E6%9E%84%E9%80%A0%20bash%20%E6%95%B0%E7%BB%84.png)
有没有办法将字符串值作为环境变量传递并使 bash 将其识别为数组?换句话说,是否有一些特殊的字符串格式告诉bash该字符串是一个数组?或者是其他类似数组的?
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_02.html
例如:
#!/usr/bin/env bash
my_array="$this_is_an_env_var"
答案1
:> export ar=(foo bar baz) # create and "export" array
:> bash -c 'echo ${ar[1]}' # array is not visible in a regular child process
:> declare -p ar # get a string which correctly creates the array
declare -a ar=([0]="foo" [1]="bar" [2]="baz")
:> my_array="$(declare -p ar)" bash -c 'eval "$my_array";echo ${ar[1]}'
bar
将eval
字符串变量转换为数组变量。eval
不过,只能与可信数据源一起使用。