从包含转义空间

时间:2018-05-18 17:29:32

标签: bash

我希望通过基于空格分割其中一个参数来填充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通过人工生成的输入或从文件中读取来解释。我想用转义空格或双引号来解析传递的参数。

0 个答案:

没有答案