bash는 나머지 매개변수를 사용합니다.

bash는 나머지 매개변수를 사용합니다.

이름과 명령을 매개변수로 사용하는 bash 스크립트가 있습니다. 이렇게 쉽네요

#myscript
echo $1
$2

저는 이렇게 운영해요

bash myscripts myjob ls

"myjob"을 에코하고 ls명령을 실행합니다. 하지만 명령이 여러 단어로 구성된 경우 아래와 같이 따옴표를 붙여야 합니다.

bash myscripts myjob "ls -l"

이제 내 질문은 따옴표를 제공할 필요가 없도록 쉘 스크립트를 작성하는 방법이 있습니까? 예를 들어, 첫 번째 인수 대신 모든 것을 내 명령으로 처리합니까? bash를 사용하여 수행할 수 있습니까?

답변1

shift예, 다음을 사용하여 이전 매개변수를 이동할 수 있습니다 .

#!/bin/bash
echo "$1"
shift 1
"$@"

shift N매개변수 1부터 N까지 건너뛰고 매개변수 N+1은 이제 1, N+2는 2가 되도록 카운터가 이동됩니다.

이는 첫 번째 명령( myjob)이 단일 단어 명령이고 두 번째 명령( ls -l)만 여러 단어 명령일 수 있음을 의미합니다.

관련 정보