linux – grep是不一致的默认为grep -P?
我有一个脚本,它做一些内务处理,从交互式
shell调用时效果很好,但在被cron调用时什么也没做.为了解决这个问题,我使用以下命令启动了一个带有“空白”环境的shell:
env -i /bin/bash --noprofile --norc 使用这个空白环境我已经挖到我的脚本,发现以下grep将不匹配任何文件: grep -il "^ws_statuss*=s*["']remove["']$" 但是,从交互式shell运行时,该命令将返回匹配文件的文件名. 作为注释,表达式匹配如下行:WS_STATUS =“remove” 通过反复试验,我发现在选项[Perl regex]中添加-P命令在’blank’shell中正常启动.但是,我不知道为什么我的登录shell似乎默认为grep -P. >只有一个grep二进制文件/ bin / grep 这是什么交易? 注意:操作系统是RHEL v5.10,Bash是v3.2.25,grep是v2.5.1 解决方法
这些变量中的任何一个都是?
GREP_OPTIONS,LC_ALL,LC_COLLATE,LANG,LC_CTYPE,LC_MESSAGES或POSIXLY_CORRECT 其中任何一个都可能影响grep的行为. 您可以尝试的一件事是“set -x”来查看运行的各个命令.您也可以将命令移动到shell脚本中并从cron中调用它.这样,您可以更轻松地更轻松地添加set,env和set -x等命令. #!/bin/bash echo SET set echo ENV env set -x grep -il "^ws_statuss*=s*["']remove["']$" exit (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |