2016-03-01 94 views

回答

2

这应该已经用空格阻止了赋值n =:Bash参数赋值不能有空格。其次,将一个命令的输出分配给一个参数,你必须使用command substitution

n=$(grep -c 'value2' outputfile.tmp) 

注意,这会告诉你有多少线包含至少出现一次value2,而不是实际数量为value2。试想一下:

$ grep -c 'value2' <<< 'value2value2' 
1 

如果你知道,只会有一个value2每行(或要计算行),我们是很好的。如果你要计算的出现,你必须使用类似

n=$(grep -o 'value2' outputfile.tmp | wc -l) 

grep -o打印在单独的行每场比赛,并wc -l计数线。

现在,要检查$n的值是否不等于六,请使用条件。与作业不同,此必须有有空格。

!=比较用于字符串比较;为整数,你应该使用-ne( “不等于”):

if [ "$n" -ne 6 ]; then 

取而代之的是测试命令[ ]的,Bash有更灵活的[[ ]]条件epxression:

if [[ "$n" -ne 6 ]]; then 

其中引用不严格必要(但不伤害!)。

或者,我们可以使用一个算术表达式:

if ((n != 6)); then 

其中任何参数而没有预先考虑$评价。