【问题标题】:Using name of BASH script as input argument使用 BASH 脚本的名称作为输入参数
【发布时间】:2021-01-15 19:06:46
【问题描述】:

我有大量 .pbs 文件要提交到远程集群。我希望能够将 .pbs 文件命名为“param1_123_param2_45.pbs”之类的名称,然后将它们输入 ARGS 以获得 Julia 代码。下面是我正在尝试做的一个示例 .pbs:

1 #!/bin/tcsh 
2 #PBS -l mem=10gb,nodes=1:ppn=2,walltime=1:00:00
3 #PBS -j oe
4 #PBS -o ./log/julia.${PBS_JOBID}.out
5 #PBS -t 1-3
6 
7 module load julia/1.5.1 python/3.8.1
8 
9 cd path/to/file  
10 
11 julia Example.jl 123 45

除了 123 和 45 被 .pbs 文件名中给出的一些通用术语替换。有没有简单的方法可以做到这一点?

【问题讨论】:

  • 您要求 Bash 支持,但您的 shebang 是针对 tcsh 的。 ;)

标签: tcsh pbs


【解决方案1】:

您可以使用 AWK。比如文件param1_123_param2_45.pbs的内容:

PARAM1=$( echo ${0%%.pbs} | awk -F "_" '{print $2}' )
PARAM2=$( echo ${0%%.pbs} | awk -F "_" '{print $4}' )
echo "Filename: $0"
echo "Param 1: $PARAM1"
echo "Param 2: $PARAM2"

正在运行:bash param1_123_param2_45.pbs

输出:

Filename: param1_123_param2_45.pbs
Param 1: 123
Param 2: 45

【讨论】:

  • 谢谢;这解决了我遇到的主要问题。但是,当我提交到集群时,我得到了一个奇怪的错误;您可以在这里看到我的错误:stackoverflow.com/questions/65755537/… 如果您有任何其他见解,我将不胜感激。
猜你喜欢
  • 2016-08-10
  • 1970-01-01
  • 2022-12-02
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
相关资源
最近更新 更多