2013-11-01 3 views
0

다음과 같이 내 쉘 스크립트에 명령 줄 매개 변수를 전달하고 가정 :명령 줄 매개 변수를 얻는 방법?

예 1) ./myshell_script ABCDEF

예 2) ./myshellscript fdebca 내 질문은

, 그 나는 경우, 항상 매개 변수 "b"다음에 오는 매개 변수 "c"를 얻고 싶습니다. [명령 줄 매개 변수는 순서에 관계없이 제공 될 수 있습니다.] 어떻게 매개 변수 "b"다음에 오는 값을 얻을 수 있습니까?

+1

아시다시피가, 매개 변수 번호가 '$ 1','$ 2', 등등. 따라서 b의 위치를 ​​찾고 다음 매개 변수를 사용해야합니다. 또한 매개 변수'$ *'의 목록을 파싱 할 수 있습니다. 자세한 내용은'man sh'을 읽으십시오. – taro

답변

1
$ ./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 
+0

고스트 farmer1992 – user2930942

0

그것은 매개 변수 순서에 의존하는 대신 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으로 쓸 수 있습니다.

주문을 염려 할 필요없이 스크립트의 시작 부분에 몇 줄의 여분의 줄과 통화 중에 여분의 문자가 유용 할 것입니다.

Getopts Tutorial on Bask-hackers

+0

고스트 하이젠 버그! – user2930942

+0

@ user2930942 답변을 수락하는 것을 잊지 마세요) –

0

myshellscript

#!/bin/bash 
grep -oP 'b\s*\K[^ ]+' <<<$* 

테스트 :

% myshellscript a b c d e f 
c 
% myshellscript f d e b c a 
c 
+0

고맙습니다. – user2930942

+0

@ user2930942 환영합니다! 이 사이트를 처음 접해 본 것 같습니다. 어떤 ans가 당신을 위해 일하고 있다면, the ans 외에 hollow green tick mark를 클릭하여 ans를 받아들이는 것을 고려하십시오. 추신 네 질문 중 하나라도 받아 들일 수 없다는 걸 알았어. – jkshah

관련 문제