23,121
社区成员
发帖
与我相关
我的任务
分享
param_values=$(parse_json_with_keys) # 运行后,param_values: "select * from t" "terry"
param_values=(${param_values})
echo ${param_values[0]} # 输出: "select
echo ${param_values[1]} # 输出: *
echo ${param_values[0]} # 输出: select * from t
echo ${param_values[1]} # 输出: terry
#正确的情况
$ param_values=("select * from t" "terry")
$ echo "${param_values[0]}" #必须加引号,或则set -f禁止*扩展为文件名
select * from t
$ echo "${param_values[1]}"
terry
$ param_values="select * from t" "terry" #错误
#以下就是问题产生的原因
$ param_values='"select * from t" "terry"'
$ echo "$param_values"
"select * from t" "terry"
$ param_values=("$param_values")
$ echo "${param_values[0]}"
"select * from t" "terry"
$ param_values=($param_values)
$ echo "${param_values[0]}"
"select
#暂时的解决办法就是
$ oldifs=$IFS; IFS=$'\n'; i=0; for param_tmp in $(echo "${param_values}" | sed -e "s/\" \+\"/\"\n\"/g" -e "s/\"//g");do param_values[i]="${param_tmp}";((i++)); done; IFS=$oldifs