我想向python命令提供存储在file.Example中的多个参数
command \
--param="var1" \
--param="var2" \
--param="var3 var3"
我试图:从文件中读取它们并以数组或字符串存储 . 当然,欢迎任何最佳解决方案 . 但是,在使用循环/连接字符串并将变量提供给命令时,使用python脚本解析它时会出现问题 .
stringparam=""
declare -a myarray=()
while read -r line || [[ -n "$line" ]]; do
if [ ! -z "$line" ]; then
myarray[$index]="--param=\"$line\""
index=$(($index+1))
stringparam+="--param=\"${line}\" "
fi
done < "${input_file}"
echo ${myarray[@]}
echo "${prontos}"
# Execution
python_lib \
"${force}" \
--p1="${varp1}" \
--p2="${varp2}" \
--p3="${varp3}" \
--p4="${varp4}" \
--p5="${varp5}" \
"$(for i in "${myarray[@]}"; do echo ${i}; done)" # approach 1
"${stringparam}" # approach 2
考虑到文件内容是:
月亮 - 煎饼
太阳星星
脚本中的输出:
- 手动提供时应该如何 - 例如--param =“moon - pancake”等 .
param =(u'moon - pancake',u'sun - star star')
- 通过添加循环或连接字符串完成后的样子:
param =(你'月亮 - 煎饼' - param =“太阳 - 星星”',)
Prolly与字符串有关;许多“声明 . 我做错了什么,是否有更好的bash解决方案呢?
1 回答
我认为你的第二种方法更像GNU / Bash,但你不应该使用它周围的引号,否则$ stringvram的全部内容将被
python-lib
可执行文件视为唯一参数 .您应该删除它周围的引号 - 这次 - 所有空格字符都被视为参数分隔符:
但是为了避免混合单引号和双引号的问题,在构建$ stringparam变量时应该使用简单的引号: