grep + 仅当值位于行末时才匹配值

grep + 仅当值位于行末时才匹配值

请指教我的代码有什么问题,(我在 Linux 和 Solaris 操作系统上运行此代码)

我不明白这句话的意思:

    "file ended with .tmp"

例子:

我需要验证 $FILE 是否以.tmp或者。老的ETC ...

代码使用以下示例设置参数:FILE=hosts.tmp

所以我预计 grep 将匹配“.tmp”“因为.tmp是最后一个字符

  • 对于其他 TOKENS 也一样,如“TEMP”或“previos”或“-OLD”等等

代码(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

您的代码存在两个问题:

1)当 TOKEN 传递给 grep 时,您需要-像这样进行转义:

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

2)您使用单引号,这意味着变量不会被扩展,请用引号替换:

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

相关内容