【问题标题】:How to pass arguments with quotation marks as an arguments如何将带引号的参数作为参数传递
【发布时间】:2015-10-29 20:33:56
【问题描述】:
我有一个脚本,它运行带有一些选项的 C++ 应用程序。我想要做的是将 C++ 应用程序的选项作为脚本的属性。
options=$1
...
./app $options
问题是当我尝试传递像
这样的选项时
./script '-a -C "9.626 0.262 8.266"'
-C 选项的属性只是 '"9.626' 而不是整个字符串。任何想法如何解决这个问题?:) 谢谢
【问题讨论】:
标签:
bash
attributes
options
quotation-marks
【解决方案1】:
你必须使用一个数组。
options=( -a -C "9.626 0.262 8.266" )
./script "${options[@]}"
script 内部,$1 是 -a,$2 是 -C,$3 是 9.626 0.262 8.266。 (请注意,引号不是$3 的一部分;它们仅用于在将参数设置为script 时保护空格。大概,您打算将所有三个参数都传递给其他命令,并且可以使用
other_command "$1" "$2" "$3"
或更一般地,容纳任意数量的参数
other_command "$@"