来自带有嵌套引号的字符串的 Bash 数组,没有 eval

问题描述 投票:0回答:0
input="a b '1 2 3' c"

arr=($input); printf '%s|' "${arr[@]}"
# Prints: a|b|'1|2|3'|c|

eval "arr=($input)"; printf '%s|' "${arr[@]}"
# Prints: a|b|1 2 3|c|

如何在不使用

eval
的情况下获得后一种输出?

arrays bash eval expansion quotation-marks
© www.soinside.com 2019 - 2024. All rights reserved.