Wan*_*gic 0 arrays bash string-interpolation
我试图弄清楚 bash 中是否有一种更短的方法,仅当变量的值非空时才将其有条件地附加到数组中。
我相信以下是正确的,但有点“罗嗦”
my_array=()
if [[ "${my_first_var:-}" ]]; then
my_array+=( "${my_first_var}" )
fi
if [[ "${my_second_var:-}" ]]; then
my_array+= ( "${my_second_var}" )
fi
Run Code Online (Sandbox Code Playgroud)
我这么问是因为我正在尝试清理一些执行此操作的代码:
my_array+=( ${my_first_var:-} ${my_second_var:-} )
Run Code Online (Sandbox Code Playgroud)
这是一个“有效”的 hack,可以有条件地仅将非空值附加到my_array,并且很好,因为它使用数组插值,但有一个问题,如果字符串中my_var包含空格(或IFS设置为任何内容),它会执行某些操作非常意外(将多个元素附加到数组中)。
我可能想到了这一点,但我不确定我的意图是否足够明确。
[[ "${my_first_var:-}" ]] && my_array+=( "${my_first_var}" )
[[ "${my_second_var:-}" ]] && my_array+=( "${my_second_var}" )
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以有条件地仅附加非空值,该值简洁但惯用且清晰?
一种选择是
my_array+=( ${my_var+"$my_var"} )
Run Code Online (Sandbox Code Playgroud)
my_var如果定义了数组,即使数组为空,也会将 的值添加到数组中。如果您只想在已定义且不为空的情况下添加它,请使用
my_array+=( ${my_var:+"$my_var"} )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |