![n번째 특정 매개변수에 나머지 매개변수를 모두 포함하는 변수를 생성하는 방법](https://linux55.com/image/127773/n%EB%B2%88%EC%A7%B8%20%ED%8A%B9%EC%A0%95%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EC%97%90%20%EB%82%98%EB%A8%B8%EC%A7%80%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EB%AA%A8%EB%91%90%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
$a...라는 변수에서 3번째 매개변수부터 9번째 매개변수까지의 모든 데이터를 보유하는 문자열과 같이 n번째 특정 매개변수에 나머지 모든 매개변수를 포함하는 변수를 생성하려면 어떻게 해야 합니까? 미리 감사드립니다.
답변1
Bash/ksh/zsh에서는 유사한 접근 방식을 사용하여 ${@:3:7}
세 번째부터 아홉 번째 인수를 다른 단어로 처리하거나 첫 번째 문자 ${*:3:7}
와 IFS
연결선으로 연결할 수 있습니다. (7, 3부터 9까지 7이니까.)
그래서:
$ set -- $(seq 11 21)
$ echo "${*:3:7}"
13 14 15 16 17 18 19
또는
$ a="${*:3:7}"
그러나 이러한 인수를 다른 명령의 인수로 전달하려면 "${@:3:7}"
관련 명령줄에서 직접 사용하십시오.
somecmd "${@:3:7}"
표준 셸에서 이 작업을 수행해야 하는 경우 를 사용할 수 없습니다 . 대신 첫 번째 인수를 제거하고 을 사용해야 ${var:n:m}
합니다 .shift
"$@"
arg1=$1
arg2=$2
shift 2
somecmd "$@"