循环创建无限 grep 进程
Loop creating infinite grep process
我编写了一个 bash 脚本,当有人使用 netstat 时不显示特定端口。我已经把它放在 .bashrc 文件中了。
function test(){
if [ ! -n "" ]; then
netstat | grep -v 1111;
else
netstat "" | grep -v 1111;
fi
}
alias netstat='test'
执行时,有时在执行 netstat | grep 1111
时(并非总是如此,也无法指定在何种情况下),它会创建无限数量的 grep 进程。
预期的结果是 return 没有过滤端口的 netstat 输出。
不需要别名,您可以使用 command
命令来区分函数 netstat
和 "real" 命令 netstat
.
netstat () {
if [ -z "" ]; then
command netstat
else
command netstat ""
fi | grep -v 1111
}
如果您的实际意图是确定是否存在参数,而不是简单的 non-empty 参数(即区分 netstat
和 netstat ""
),您可以减少此(在bash
)到
netstat () {
command netstat "${@:1:1}" | grep -v 1111
}
参数展开"disappears"如果$#
真的是0.
主要问题是如何指定您对 netstat
的使用,没有完整路径。所以你得到了递归体验。
我建议使用 export NETSTAT=$(which netstat)
之类的东西。那么你的内部使用就可以根据你拥有的NETSTAT全路径了。
我编写了一个 bash 脚本,当有人使用 netstat 时不显示特定端口。我已经把它放在 .bashrc 文件中了。
function test(){
if [ ! -n "" ]; then
netstat | grep -v 1111;
else
netstat "" | grep -v 1111;
fi
}
alias netstat='test'
执行时,有时在执行 netstat | grep 1111
时(并非总是如此,也无法指定在何种情况下),它会创建无限数量的 grep 进程。
预期的结果是 return 没有过滤端口的 netstat 输出。
不需要别名,您可以使用 command
命令来区分函数 netstat
和 "real" 命令 netstat
.
netstat () {
if [ -z "" ]; then
command netstat
else
command netstat ""
fi | grep -v 1111
}
如果您的实际意图是确定是否存在参数,而不是简单的 non-empty 参数(即区分 netstat
和 netstat ""
),您可以减少此(在bash
)到
netstat () {
command netstat "${@:1:1}" | grep -v 1111
}
参数展开"disappears"如果$#
真的是0.
主要问题是如何指定您对 netstat
的使用,没有完整路径。所以你得到了递归体验。
我建议使用 export NETSTAT=$(which netstat)
之类的东西。那么你的内部使用就可以根据你拥有的NETSTAT全路径了。