0

我在不同的环境中运行我的脚本,因此我将要启动的程序的路径和名称存储在变量中$CreateSequenceDictionary

该程序使用参数R=O=因此我将整个命令放在引号“”中。没有这些,程序将在没有任何参数的情况下启动。

现在我的问题是:$reference我不想传递这个变量的内容。我试过这个:

"java -jar $CreateSequenceDictionary R=$reference O=output" >mlogfile

和许多变体(例如 `` "" eval \)都没有成功。

请问,我应该如何调整我的命令,以便我可以运行存储在变量中的程序,而参数存储在变量中?

编辑:如果我应该在终端中使用命令,它看起来像这样:

 java -jar /path/CreateSequenceDictionary.jar R=input O=output

但是,我想从变量中获取程序的名称以及从变量中获取输入文件的名称。

4

1 回答 1

2

您可以在没有周围引号的情况下执行此操作。

java -jar $CreateSequenceDictionary R=$reference O=output > mlogfile

Bash 将在运行命令之前扩展变量。

如果你想有条件地包含R=andO=选项,你可以尝试这样的事情:

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变量为空的参数。

于 2012-12-03T10:40:24.263 回答