Bash 脚本忽略下划线后面的所有终端输入

Bash 脚本忽略下划线后面的所有终端输入

目标

我的服务器使用 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 经验的人来说这应该是一个简单的修复!

相关内容