我有一个脚本,它做一些内务处理,从交互式
shell调用时效果很好,但在被cron调用时什么也没做.为了解决这个问题,我使用以下命令启动了一个带有“空白”环境的shell:
env -i /bin/bash --noprofile --norc
使用这个空白环境我已经挖到我的脚本,发现以下grep将不匹配任何文件:
grep -il "^ws_status\s*=\s*[\"']remove[\"']$"
但是,从交互式shell运行时,该命令将返回匹配文件的文件名.
作为注释,表达式匹配如下行:WS_STATUS =“remove”
通过反复试验,我发现在选项[Perl regex]中添加-P命令在’blank’shell中正常启动.但是,我不知道为什么我的登录shell似乎默认为grep -P.
>只有一个grep二进制文件/ bin / grep
>没有为grep = pgrep或grep =“grep -P”定义的别名
>没有定义env变量GREP_OPTIONS.
这是什么交易?
注意:操作系统是RHEL v5.10,Bash是v3.2.25,grep是v2.5.1