2014-12-07 59 views
2

我的问题是,prepinace_grepu,它是$3函数内部,估计为-i,而不是-i -n如我所料。
我怎样才能改变它的工作?我不能把它放在两个变量,因为我希望它是灵活的,只是把它作为一个字符串,所以它会在外壳不亚于工作,即使prepinace_grepu="-c -v -i -f"等等Bash函数参数

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

引用变量您可以:

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

由于prepinace_grepu包含空格必须用引号,否则调用的函数只会-i$3-n$4发送。

+1

谢谢,它的权利:D – waTEXmelon 2014-12-07 13:56:24

+0

不客气,很高兴它解决了。 – anubhava 2014-12-07 13:57:50

+1

也可以用grey – repzero 2014-12-07 13:59:17