grep 在命令行中工作正常,但在脚本中不返回任何内容

grep 在命令行中工作正常,但在脚本中不返回任何内容

我正在尝试编写一个小脚本来获取符合特定条件的文件列表到文件中。

#!/bin/sh
cd /var/www_data/patch/
grep --include=\*.{php,ini,conf,sh} -ril -P "'([\d\w\-\_\.]+)(@domain.com)'" "/var/www_data/something/" 2>&1 > mails

grep行在命令行中运行良好,但如果我通过脚本启动它,生成的文件大小将为 0 字节。有什么想法为什么会发生这种情况吗?

答案1

发现了我自己的错误。本来应该是的#!/bin/bash。感谢@steeldriver 的提示

答案2

为了在脚本中启用 shell 扩展,您必须将命令行选项传递给 bash,这可以在脚本本身中完成:

#! /bin/bash
set -B   #enables expansion
set -X   #enables debugging

使用第一个选项,所有内容都将传递到 shell,就像在命令行中编写一样,第二个选项将生成大量输出,对于查看发生的情况非常有用,但一旦脚本正常工作,您肯定希望禁用它。

相关内容