쉘 스크립트가 있습니다.
#!/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