이름과 명령을 매개변수로 사용하는 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
)만 여러 단어 명령일 수 있음을 의미합니다.