다음과 같이 내 쉘 스크립트에 명령 줄 매개 변수를 전달하고 가정 :명령 줄 매개 변수를 얻는 방법?
예 1) ./myshell_script ABCDEF
예 2) ./myshellscript fdebca 내 질문은
, 그 나는 경우, 항상 매개 변수 "b"다음에 오는 매개 변수 "c"를 얻고 싶습니다. [명령 줄 매개 변수는 순서에 관계없이 제공 될 수 있습니다.] 어떻게 매개 변수 "b"다음에 오는 값을 얻을 수 있습니까?
다음과 같이 내 쉘 스크립트에 명령 줄 매개 변수를 전달하고 가정 :명령 줄 매개 변수를 얻는 방법?
예 1) ./myshell_script ABCDEF
예 2) ./myshellscript fdebca 내 질문은
, 그 나는 경우, 항상 매개 변수 "b"다음에 오는 매개 변수 "c"를 얻고 싶습니다. [명령 줄 매개 변수는 순서에 관계없이 제공 될 수 있습니다.] 어떻게 매개 변수 "b"다음에 오는 값을 얻을 수 있습니까?
$ ./a.sh f d e b c a
c
코드
#!/bin/bash
i=
for p in [email protected]; do
if [ "$i" == "1" ];then
echo $p
exit
fi
if [ "$p" == "b" ];then
i=1
fi
done
고스트 farmer1992 – user2930942
getopts
를 사용하여 명확한 값에 할당하지 않는 것이 좋습니다의 getopts
사용. 이를 통해 ./myshellscript -f f -d d -e e -b b -c c -a a
의 순열과 동일한 내용을 ./myshell_script -a a -b b -c c -d d -d e -f f
으로 쓸 수 있습니다.
주문을 염려 할 필요없이 스크립트의 시작 부분에 몇 줄의 여분의 줄과 통화 중에 여분의 문자가 유용 할 것입니다.
고스트 하이젠 버그! – user2930942
@ user2930942 답변을 수락하는 것을 잊지 마세요) –
myshellscript
#!/bin/bash
grep -oP 'b\s*\K[^ ]+' <<<$*
테스트 :
% myshellscript a b c d e f
c
% myshellscript f d e b c a
c
고맙습니다. – user2930942
@ user2930942 환영합니다! 이 사이트를 처음 접해 본 것 같습니다. 어떤 ans가 당신을 위해 일하고 있다면, the ans 외에 hollow green tick mark를 클릭하여 ans를 받아들이는 것을 고려하십시오. 추신 네 질문 중 하나라도 받아 들일 수 없다는 걸 알았어. – jkshah
아시다시피가, 매개 변수 번호가 '$ 1','$ 2', 등등. 따라서 b의 위치를 찾고 다음 매개 변수를 사용해야합니다. 또한 매개 변수'$ *'의 목록을 파싱 할 수 있습니다. 자세한 내용은'man sh'을 읽으십시오. – taro