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 경험이 있는 사람이라면 누구나 쉽게 해결할 수 있을 것이라고 생각합니다!

관련 정보