【发布时间】:2019-10-21 22:27:38
【问题描述】:
我正在尝试创建一个自定义函数 (hisgrep) 以从历史记录中 grep。
我之前有它工作过,当时代码基本上是“历史 | grep $1”,但我希望实现能够 grep 多个关键字。 (例如,“hisgrep docker client”将等于“history | grep docker | grep client”)。
我的问题是,当我尝试执行此操作时,出现以下错误:“-bash: history: |: numeric argument required.”
我尝试将最终调用命令的方式从 $cmd 更改为 $cmd,但没有任何效果。
代码如下:
#!/bin/bash
function hisgrep() {
cmd='history'
for arg in "$@"; do
cmd="$cmd | grep $arg"
done
`$cmd`
}
【问题讨论】:
-
eval "$cmd"有机会工作(但在命令中添加grep "$1"…grep "$<n>"而不是grep <arg>) -
@Ry- 但这不会成功,所以我必须知道它总是会收到多少个参数?
-
请看BashFAQ/050。