使用 BASH 脚本的名称作为输入参数
Using name of BASH script as input argument
我有大量 .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 文件名称中给出的一些通用术语。有没有简单的方法来做到这一点?
您可以使用 AWK。例如文件内容 param1_123_param2_45.pbs
:
PARAM1=$( echo ${0%%.pbs} | awk -F "_" '{print }' )
PARAM2=$( echo ${0%%.pbs} | awk -F "_" '{print }' )
echo "Filename: [=10=]"
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
我有大量 .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 文件名称中给出的一些通用术语。有没有简单的方法来做到这一点?
您可以使用 AWK。例如文件内容 param1_123_param2_45.pbs
:
PARAM1=$( echo ${0%%.pbs} | awk -F "_" '{print }' )
PARAM2=$( echo ${0%%.pbs} | awk -F "_" '{print }' )
echo "Filename: [=10=]"
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