首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Incrontab不处理IF语句

Incrontab不处理IF语句
EN

Stack Overflow用户
提问于 2016-10-17 21:07:40
回答 1查看 524关注 0票数 1

首先,我是一个Windows的人,但是现在我正在接受Linux的任务。我使用incrontab来监视Oracle服务器上的一个目录。

我试图修改它,以便如果它看到文件F078311,它将回显测试到日志文件。否则,它将检查该文件是否与第二种格式匹配,并执行该回波。

它正在运行第二个IF,并将日期回显到日志,但不回显测试到日志。我的语法有什么问题吗?

它正在监视/export目录。而$1将是/export/F073811

代码语言:javascript
复制
incrontab -l
/export IN_MODIFY,IN_CLOSE_WRITE,IN_MOVED_TO /usr/local/scripts/EXPrename.sh $@/$#

Shell脚本:

代码语言:javascript
复制
#!/bin/bash
# This file is invoked using incron and will rename the file with the current date.

# Set newdate as current date, YYYYMMDD-HHMMSS
newdate="$(date +%Y%m%d-%H%M%S)"

#Sets the filename as the filename_YYYYMMDD-HHMMSS
filename="A$newdate.txt"

joblog="/logs/joblog.log"


[[ ( $1 =~ F073811$ ) ]] &&  echo Test >> /logs/joblog.log

#checks to file format to see if it looks like name_YYYYMMDD-HHMMSS.  If it does not then it renames the file to that format.
[[ ! ( $1 =~ A[0-9]{8}-[0-9]{6}\.txt$ ) ]] && echo ---- `date` ------ >> "$joblog" 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-17 21:32:57

在这种情况下,不需要正则表达式,使用basename计算不带路径的精确文件名,然后检查是否相等。

代码语言:javascript
复制
[[ $(basename $1) = F073811 ]] &&  echo Test >> /logs/joblog.log

注意:我刚刚注意到,您的命令行只在Bash 4中适用于Bash 3,而不是在Bash 3中工作,而且不涉及正则表达式,而且它将与/export/XXXXF073811不匹配,而您的正则表达式则不匹配。

我越多地想到这一点,我就越确信问题很可能是以/export/F073811\r作为第一个参数来调用您(在Linux上非常频繁地出现MS行终止字符)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40095673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档