【发布时间】:2021-04-14 12:09:09
【问题描述】:
我在名为$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```
"""
}
【问题讨论】:
-
三引号是怎么回事? Bash 将三个反引号完全相同视为一个,只是执行速度较慢,因为它是一对空的(打开/关闭),然后是其中包含内容的一对,然后是另一个空的(打开/关闭) 一对。 所有这些对产生子shell,包括空的。
-
除此之外,
$(cat anything)(或其等效的反引号)存在BashFAQ #50 中讨论的错误,因为命令替换的结果与参数扩展结果的解析方式相同。 -
如果文件是普通的 unix 文本文件格式,
echo " -Xms1g" >>thefile将在文件中添加一个新行,而不是添加到已经存在的行中。由于您使用文件的方式,这可能无关紧要,但我仍然会检查文件以查看是否发生了这种情况。 -
@Gordan 如何添加到同一行?添加后如何在bash中运行?
-
你能把文件变成一个普通的shell脚本,然后把
-Xms1g作为参数传递给它吗(让脚本用例如commandToRun "$@"传递参数)?