我的问题是,prepinace_grepu
(函数内部为$3
)的评估结果为-i
而不是-i -n
,正如我预期的那样。
我怎样才能改变它?我不能把它放在两个变量中,因为我希望它是灵活的,只需将它作为一个字符串,所以即使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
答案 0 :(得分:3)
尽可能多地在shell中引用变量:
pattern="Hojny"
prepinace_moje="-vi"
prepinace_grepu="-i -n"
compare "$pattern" "$prepinace_moje" "$prepinace_grepu"
由于prepinace_grepu
包含空格,您必须在引号中发送它,否则称为函数只会-i
和$3
以及-n
为$4
。