请指教我的代码有什么问题,(我在 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