我希望通过基于空格分割其中一个参数来填充bash数组,但保留转义空格或双引号。
populate_array() {
params="${1}"
array=(-j $params)
for elem in "${array[@]}"
do
echo "${elem}"
done
}
cols="x\ y"
populate_array "${cols}"
输出:
-j
x\
y
期望的输出:
-j
x y
我甚至试过转义双引号
populate_array() {
params="${1}"
array=(-j $params)
for elem in "${array[@]}"
do
echo "${elem}"
done
}
cols="\"x y\""
populate_array "${cols}"
输出:
-j
"x
y"
期望的输出:
-j
x y
仅供参考,可以使用eval
轻松完成,但我宁愿不这样做。
答案https://stackoverflow.com/a/31485948/3086551通过人工生成的输入或从文件中读取来解释。我想用转义空格或双引号来解析传递的参数。