将参数附加到文件中的命令并运行附加的命令

问题描述

我在名为 $stat_val_result_command文件中有以下命令。 我想在文件末尾添加 -xms1g 参数,使其看起来像这样:

  <my command in the file> -xms1g

但是,我想在追加后运行此命令。我在一个名为“nextflow”的工作流系统中运行它。我捆绑了很多东西,包括跟随,但它不起作用。检查认在 Bash 中运行的脚本部分:

    process statisticalValidation {

   input:
   file stat_val_result_command from validation_results_command.flatten()

   output:
   file "*_${params.ticket}_statistical_validation.txt" into validation_results

   script:
   """
   echo " -xms1g"  >> $stat_val_result_command && ```cat  $stat_val_result_command```
   """
}

解决方法

最好避免附加或操作在工作目录中本地化的输入文件,因为这些文件可以并且默认情况下是原始文件的符号链接。

在您的情况下,请考虑导出 JAVA_TOOL_OPTIONS 环境变量。这可能适合您,也可能不适合您,但如果您可以控制脚本的生成方式,则可能会给您一些想法:

export JAVA_TOOL_OPTIONS="-Xms1g"
bash "${stat_val_result_command}"

此外,通常最好避免像这样本地化和运行脚本。这可能是不可避免的,但通常有更好的选择。例如,third-party scripts,就像您的 Bash 脚本可以更简单地处理:

授予这些文件的执行权限并将它们复制到 项目存储库根目录中名为 bin/ 的文件夹。 Nextflow 会自动将此文件夹添加到 PATH 环境中 变量,脚本将自动在您的 管道,而无需指定调用它们的绝对路径。

这当然假设您可以控制和参数化创建 Bash 脚本的过程。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...