2014-12-07 3 views
2

내 문제는 인데, 함수 내에서 $3-i -n 대신에 -i으로 평가됩니다.
어떻게 작동하도록 변경할 수 있습니까? 그리고 나는 그것을 유연하게 원하기 때문에, 두 변수에 넣어 그냥 문자열로 가져가, 그래서만큼 쉘 등의 경우에도 prepinace_grepu="-c -v -i -f" ...배시 함수 인수

compare() 
{ 
semka $2 $1 /etc/passwd /etc/shadow | sort > result1.txt 
grep $3 $1 /etc/passwd /etc/shadow | sort > result2.txt 
diff result2.txt result1.txt > diff.txt 

if [[ -s diff.txt ]] ; 
    then echo "FAIL" 
else echo "OK" 
fi ; 
} 

pattern=Hojny 
prepinace_moje="-vi" 
prepinace_grepu="-i -n" 
compare $pattern $prepinace_moje $prepinace_grepu 

답변

3

견적 변수를 작동하지 못할 당신은 할 수 있습니다 prepinace_grepu 공간을 포함

pattern="Hojny" 
prepinace_moje="-vi" 
prepinace_grepu="-i -n" 
compare "$pattern" "$prepinace_moje" "$prepinace_grepu" 

때문에 그렇지 않으면 단지 $4-i$3-n을 얻을 것이다 기능이라고 따옴표로 보내야합니다.

+1

덕분에 그 권리 : D – waTEXmelon

+0

다행이었습니다. 다행이었습니다. – anubhava

+1

grepping 할 때 $ 1, $ 2 및 $ 3을 큰 따옴표로 묶는 것이 안전 할 것입니다. – repzero