2014-11-22 4 views
0

bash 스크립트가 있으며이 스크립트로 수신 된 모든 인수를 처리하는 많은 functions이 있습니다. 문제는 myfunction [email protected] 또는 myfunction $*을 사용하는 경우 공백 문자가 포함 된 인수가 잘못된 방식으로 해석되므로 myfunction "$1" "$2" "$3" ...을 사용해야하며 미성숙하고 인수의 개수를 9로 제한합니다. 해결 방법이 있습니까? 문제, 아마도 어쨌든 인수를 받아서 global? 아니면 이것을 가능하게하는 다른 트릭이 있습니까?bash 스크립트의 인수 그룹화

답변

2

따옴표를 사용하면이를 방지 할 수 있습니다.

예 :

test() { 
    for i in "[email protected]" 
    do 
     echo "$i" 
    done 
} 

test "[email protected]" 

출력 :

$ ./test.sh foo "bar baz" 
foo 
bar baz 

없이 따옴표 :

test() { 
    for i in [email protected] # no quotes 
    do 
     echo "$i" 
    done 
} 

test "[email protected]" 

출력 :

$ ./test.sh foo "bar baz" 
foo 
bar 
baz 

또는

test() { 
    for i in "[email protected]" 
    do 
     echo "$i" 
    done 
} 

test [email protected] # no quotes 

출력 :

$ ./test.sh foo "bar baz" 
foo 
bar 
baz 
+1

당신은 함수를 정의하기 위해'function' 키워드를 사용할 수 없습니다. 함수는'test() {...'로 정의되어야합니다. –

+0

네 말이 맞아. 나는 내 대답을 편집했다. –