我在不同的环境中运行我的脚本,因此我将要启动的程序的路径和名称存储在变量$CreateSequenceDictionary
中。
该程序使用参数R=
和O=
因此我将整个命令放在引号"中。没有这些,程序在没有任何参数的情况下启动。
现在我的问题是:我想传递这个变量的内容,而不是$reference
。我试过这个:
"java -jar $CreateSequenceDictionary R=$reference O=output" >mlogfile
和许多变体(例如 '' " 评估 \) 没有成功。
请问,我应该如何调整我的命令,以便我可以运行存储在变量中的程序,参数存储在变量中?
编辑:如果我应该在终端中使用命令,它看起来像这样:
java -jar /path/CreateSequenceDictionary.jar R=input O=output
但是,我想从变量中获取程序的名称,并从变量中获取输入文件的名称。
您可以在没有引号的情况下执行此操作。
java -jar $CreateSequenceDictionary R=$reference O=output > mlogfile
Bash 将在运行命令之前展开变量。
如果要有条件地包含R=
和O=
选项,可以尝试如下操作:
CreateSequenceDictionary="your_Program"
r_option ="$reference"
o_option="output"
arguments=()
[[ "$r_option" ]] && arguments+=("$r_option")
[[ "$o_option" ]] && arguments+=("$o_option")
java -jar $CreateSequenceDictionary "${arguments[@]}" > mlogfile
这将动态构建其他参数,并跳过关联*_option
变量为空的参数。