[bash] bash 스크립트에서 다른 명령으로 매개 변수를 어떻게 전달합니까?

내 bash 스크립트 내에서 하나 또는 두 개의 매개 변수 (스크립트가 인식 할 수 있음)를 구문 분석 한 다음 나머지 매개 변수를 스크립트에서 호출 된 명령으로 전달하고 싶습니다. 어떻게해야합니까?



답변

shift내장 명령을 사용하여 인수를 “먹으십시오”. 그런 다음 자식 프로세스를 호출하고 "$@"나머지 모든 인수를 포함 하도록 인수를 전달하십시오 . 따옴표는 인수 목록의 확장이 올바르게 인용되도록하기 때문에 유지되어야합니다.


답변

bash는 shift 명령을 사용합니다 .

예 : shifttest.sh :

#!/bin/bash
echo $1
shift
echo $1 $2

shifttest.sh 12 3 생성

1
2 3


답변

Bash는 하위 설정 매개 변수 ( 서브 세트 및 하위 문자열 참조 )를 지원하므로 이와 같이 처리 / 전달할 매개 변수를 선택할 수 있습니다.

  1. 새 파일을 열고 편집하십시오 : 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}"
  2. 그것을 실행 :

    $ chmod u+x r.sh
    $ ./r.sh 1 2 3 4 5 6 7 8 9 10
  3. 결과는 다음과 같습니다.

    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

답변