我是bash脚本的新手(和*nix shell一样),但我正在尝试编写这个脚本,以便更轻松地使用代码库.
我写过这个
#!/bin/bash
args=("$@");
for arg in args
grep arg * */* */*/* */*/*/* */*/*/*/*;
done
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,会发生这种情况:
~/Work/richmond $ ./f.sh "\$_REQUEST\['a'\]" ./f.sh: line 4: syntax error near unexpected token `grep' ./f.sh: line 4: ` grep arg * */* */*/* */*/*/* */*/*/*/*;' ~/Work/richmond $
我该怎么做呢?
而且,我认为一个更重要的问题是,如何才能使grep像这样通过子目录进行递归?
使用shell脚本和使用bash的任何其他技巧和/或陷阱也将受到赞赏.
语法错误是因为你错过了do.至于递归搜索,如果你grep有-R选择,你会做:
#!/bin/bash
for arg in "$@"; do
grep -R "$arg" *
done
Run Code Online (Sandbox Code Playgroud)
否则你可以使用find:
#!/bin/bash
for arg in "$@"; do
find . -exec grep "$arg" {} +
done
Run Code Online (Sandbox Code Playgroud)
在后一个示例中,find将从当前目录开始,使用它找到的文件名执行grep和替换{}大括号..
(请注意,我也改变arg到"$arg"你需要的美元符号来获取变量的值,并引号告诉shell将它的值作为一个大的话,即使$arg包含空格或换行符.)
| 归档时间: |
|
| 查看次数: |
4326 次 |
| 最近记录: |