引号中的差分变量(在命令内)



我在不同的环境中运行我的脚本,因此我将要启动的程序的路径和名称存储在变量$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变量为空的参数。

相关内容

  • 没有找到相关文章

最新更新