내 bash 스크립트 내에서 하나 또는 두 개의 매개 변수 (스크립트가 인식 할 수 있음)를 구문 분석 한 다음 나머지 매개 변수를 스크립트에서 호출 된 명령으로 전달하고 싶습니다. 어떻게해야합니까?
답변
shift
내장 명령을 사용하여 인수를 “먹으십시오”. 그런 다음 자식 프로세스를 호출하고 "$@"
나머지 모든 인수를 포함 하도록 인수를 전달하십시오 . 따옴표는 인수 목록의 확장이 올바르게 인용되도록하기 때문에 유지되어야합니다.
답변
bash는 shift 명령을 사용합니다 .
예 : shifttest.sh :
#!/bin/bash
echo $1
shift
echo $1 $2
shifttest.sh 12 3 생성
1
2 3
답변
Bash는 하위 설정 매개 변수 ( 서브 세트 및 하위 문자열 참조 )를 지원하므로 이와 같이 처리 / 전달할 매개 변수를 선택할 수 있습니다.
-
새 파일을 열고 편집하십시오 : vim
r.sh
:echo "params only 2 : ${@:2:1}" echo "params 2 and 3 : ${@:2:2}" echo "params all from 2: ${@:2:99}" echo "params all from 2: ${@:2}"
-
그것을 실행 :
$ chmod u+x r.sh $ ./r.sh 1 2 3 4 5 6 7 8 9 10
-
결과는 다음과 같습니다.
params only 2 : 2 params 2 and 3 : 2 3 params all from 2: 2 3 4 5 6 7 8 9 10 params all from 2: 2 3 4 5 6 7 8 9 10