bash – 如何将变量的默认值设置为数组?
发布时间:2020-12-15 22:57:47 所属栏目:安全 来源:网络整理
导读:我最近发现,当未设置该变量时,Bash可以将变量设置为默认值(如 this post中所述). 不幸的是,当默认值是数组时,这似乎不起作用.作为一个例子考虑, default_value=(0 1 2 3 4)my_variable=${my_variable:=("${default_value[@]}")}echo ${my_variable[0]}(0 a 2
我最近发现,当未设置该变量时,Bash可以将变量设置为默认值(如
this post中所述).
不幸的是,当默认值是数组时,这似乎不起作用.作为一个例子考虑, default_value=(0 1 2 3 4) my_variable=${my_variable:=("${default_value[@]}")} echo ${my_variable[0]} (0 a 2 3 4) #returns array :-( echo ${my_variable[1]) #returns empty 有谁知道这是怎么回事?请注意,更改:=到: – 没有帮助. 另一个问题是,我们得到的任何解决方案也应该适用于my_variable之前已经预先设置的,所以 my_variable=("a" "b" "c") default_value=(0 1 2 3 4) my_variable=${my_variable:=("${default_value[@]}")} echo ${my_variable[0]} "a" echo ${my_variable[1]} "b" echo ${my_variable[2]} "c" 解决方法
要使它使用数组:
unset my_variable default_value default_value=("a b" 10) my_variable=( "${my_variable[@]:-"${default_value[@]}"}" ) printf "%sn" "${my_variable[@]}" a b 10 printf "%sn" "${default_value[@]}" a b 10 Online Demo 按照男人的说法: ${parameter:-word} Use Default Values. If parameter is unset or null,the expansion of word is substituted. Otherwise,the value of parameter is substituted. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |