目标
我的服务器使用 SLURM 管理作业。队列中的每个作业都有一个作业 ID,它可以是单个整数,也可以是下划线分隔的两个整数,例如123_4
。您可以用来scontrol show job [job ID]
打印有关作业的一些常规信息,包括存储标准输出的文件的名称(具体来说,有一行显示StdOut=/path/to/stdout/file
)。我想做的就是编写一个别名,从终端输入中获取 ID 并在 vim 中打开该文件。
我的尝试
alias checkout='vi $(scontrol show job $1 | grep StdOut | cut -d'=' -f 2)
问题
当我尝试时checkout 123_4
,脚本会忽略该_4
部分。这是一个问题,因为在实践中,这部分是数组ID,并且单个数组中会有很多作业。因此,scontrol
将打印一堆StdOut=...
行,vim 将打开一堆文件(对于作业 123_1、123_2 等)。问题一定在于如何$1
读取终端输入,但我不知道如何解决这个问题。例如,我尝试用$@
and替换它$*
,并且做了类似的事情"${1}"
但无济于事。
我认为对于任何有 bash 经验的人来说这应该是一个简单的修复!