Bash スクリプトは、アンダースコアの後のすべての端末入力を無視します。

Bash スクリプトは、アンダースコアの後のすべての端末入力を無視します。

ターゲット

私のサーバーはSLURMを使用してタスクを管理します。キュー内の各ジョブにはジョブIDがあり、これは単一の整数または下線で区切られた2つの整数です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であり、1つのアレイに複数のタスクがあるので問題になります。したがって、scontrol複数行が印刷され、StdOut=...vimは複数のファイルを開きます(タスク123_1、123_2などの場合)。問題は$1端末入力をどのように読み取るのか、どうすれば修正するのか分かりません。たとえば、私は$@それをandに変更しようとしましたが、$*似たようなことをしましたが、"${1}"役に立ちませんでした。

私はこれがbash経験のある人なら誰でも簡単に解決できると思います!

関連情報