@for 루프까지 매개변수 2를 사용하세요.

@for 루프까지 매개변수 2를 사용하세요.

쉘 스크립트가 있습니다.

#!/bin/bash
exec_command -k -q $1

for i in $@
do
  grep --color=always "$i" file
done

나는 스크립트를 호출

./grepskript -v searchstring1 searchstring2

exec_command루프의 첫 번째 매개변수와 다른 모든 매개변수를 사용하고 싶습니다 do. 어떻게 해야 합니까?

답변1

shift필요에 따라 위치 매개변수를 푸시하려면 이 명령을 사용하십시오. 귀하의 경우 그렇게 하면 shift 1(즉, 첫 번째 매개변수가) 나머지 매개변수와 분리됩니다. $1마찬가지로, shift 2처음 2개의 매개변수는 매개변수 목록에서 이동됩니다. 항상 변수/매개변수를 인용하는 것을 잊지 마세요.아니요쉘이 단어 분할을 수행하도록 하십시오.

#!/bin/bash

exec_command -k -q "$1"
shift 1

for i in "$@"; do
  grep --color=always "$i" file
done

보다shift자세한 내용은 매뉴얼 페이지를 참조하세요. 이는 셸 전체에서 사용할 수 있는 POSIX 호환 옵션입니다.

bash또는 아래와 같이 인수 목록의 인덱스 기반 확장을 수행하는 다른 방법( 특정) $@으로 와드의 두 번째 요소에서 시작하여 반복합니다.

#!/bin/bash

exec_command -k -q "$1"

for i in "${@:2}"; do
  grep --color=always -- "$i" file
done

또한 첫 번째 접근 방식에서 위치 매개변수를 반복할 때 간단히 다음을 수행할 수 있습니다.

for i; do
  grep --color=always -- "$i" file
done

관련 정보