Bash函数参数

时间:2014-12-07 13:42:35

标签: bash

我的问题是,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

1 个答案:

答案 0 :(得分:3)

尽可能多地在shell中引用变量:

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

由于prepinace_grepu包含空格,您必须在引号中发送它,否则称为函数只会-i$3以及-n$4