첫 번째 인수를 제외한 모든 인수를 처리합니다(bash 스크립트에서).
첫 번째 인수는 파일명으로 예약되어 있고 다른 모든 옵션인수는 스크립트의 다른 부분으로 전달됩니다.
Google을 사용하여 이 Wiki를 찾았는데 문자 그대로의 예를 제시했습니다.
echo "${@: -1}"
다른 작업을 할 수 없습니다. 예를 들어 다음과 같습니다.
echo "${@:2,1}"
터미널에서 "Bad substitution"이 수신됩니다.
bash 스크립트에 전달된 첫 번째 인수를 제외한 모든 인수를 처리하려면 어떻게 해야 합니까?
사용방법:
echo "${@:2}"
다음 구문:
echo "${*:2}"
@Gordon이 이미 설명했듯이 를 사용하는 것은 권장되지 않습니다.*, 모든 인수를 공백이 있는 단일 인수로서 함께 실행합니다.@는 인수 자체에 공백이 포함되어 있는 경우에도 이들 사이의 인터럽트를 유지합니다.와의 차이는 없다.echo다른 많은 명령어에서는 문제가 됩니다.
에서 동작하는 솔루션을 필요로 하는 경우/bin/sh해라
first_arg="$1"
shift
echo First argument: "$first_arg"
echo Remaining arguments: "$@"
shift [n]위치 파라미터를 n회 이동합니다.ashift값을 설정합니다.$1값어치에 맞게$2, 의 가치$2값어치에 맞게$3, 등, 의 값을 삭감합니다.$#한 명씩.
bash 4 이상 버전에서 작업:
#!/bin/bash
echo "$0"; #"bash"
bash --version; #"GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)"
기능 중:
echo $@; #"p1" "p2" "p3" "p4" "p5"
echo ${@: 0}; #"bash" "p1" "p2" "p3" "p4" "p5"
echo ${@: 1}; #"p1" "p2" "p3" "p4" "p5"
echo ${@: 2}; #"p2" "p3" "p4" "p5"
echo ${@: 2:1}; #"p2"
echo ${@: 2:2}; #"p2" "p3"
echo ${@: -2}; #"p4" "p5"
echo ${@: -2:1}; #"p4"
':'와 '-' 사이의 공백에 주의해 주십시오.그렇지 않으면 다음과 같은 의미가 다릅니다.
${var:-word} var가 null이거나 설정되지 않은 경우
단어는 var로 대체됩니다.var 값은 변경되지 않습니다.${var:+word} var가 설정되어 있는 경우
단어는 var로 대체됩니다.var 값은 변경되지 않습니다.
이에 대한 설명은 다음과 같습니다.Unix / Linux - 셸 치환
http://wiki.bash-hackers.org/scripting/posparams
의 사용법에 대해 설명합니다.shift(첫 번째 N개의 파라미터를 폐기하는 경우) 다음으로 Mass Usage를 구현합니다.
다른 걸 찾다가 이걸 발견했어투고는 꽤 오래된 것처럼 보이지만, bash에서 가장 쉬운 솔루션은 다음과 같습니다(적어도 bash 4).set -- "${@:#}"여기서 #는 앞으로 유지할 어레이 요소의 시작 번호입니다.
#!/bin/bash
someVar="${1}"
someOtherVar="${2}"
set -- "${@:3}"
input=${@}
[[ "${input[*],,}" == *"someword"* ]] && someNewVar="trigger"
echo -e "${someVar}\n${someOtherVar}\n${someNewVar}\n\n${@}"
기본적으로는set -- "${@:3}"perl's shift와 같이 어레이의 첫 번째 두 가지 요소를 제거하고 세 번째 요소를 포함한 나머지 모든 요소를 유지합니다.마지막 요소도 제거할 수 있을 것 같아요
언급URL : https://stackoverflow.com/questions/9057387/process-all-arguments-except-the-first-one-in-a-bash-script
'programing' 카테고리의 다른 글
| OS X의 'date' 명령어에는 ISO 8601 '-I' 옵션이 없습니다. (0) | 2023.04.16 |
|---|---|
| NSDate를 NSString으로 변환 (0) | 2023.04.16 |
| 컨트롤 그룹의 글꼴 크기를 자동으로 조정하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
| ARC 및 브리지드캐스트 (0) | 2023.04.16 |
| 스토리보드에서 Modal과 Push segue의 차이점은 무엇입니까? (0) | 2023.04.16 |