只有当值在行尾时,grep +匹配值

请咨询我的代码有什么问题,(我在OS Linux和solaris上运行这个代码)

我不明白:

"file ended with .tmp" 

例:

我需要validation$ FILE以.tmp.old等结尾…

用下面的例子代码设置参数:FILE = hosts.tmp

所以我希望grep会匹配“.tmp ”,因为.tmp是最后一个字符

  • 对于“TEMP”,“previos”或“-old”等其他TOKENS也是如此

代码(ksh脚本)

  TOKENS=".tmp .old .previous -log temp ,TEMP -OLD previos" FILE=hosts.tmp for TOKEN in ` echo $TOKENS ` do [[ ` echo $FILE | grep -c '$TOKEN$' ` -eq 1 ]] && echo "file ended with $TOKEN" done 

你的代码有两个问题:

1)作为TOKEN得到传递给grep你需要逃避-像这样:

 TOKENS=".tmp .old .previous \-log temp ,TEMP" 

2)你正在使用单引号,这意味着variables不被扩展,用引号replace:

 [[ ` echo $FILE | grep -c "$TOKEN$" ` -eq 1 ]] && echo file ended with $TOKEN