我已经将bash脚本编码为当有人使用netstat时不显示某些端口。我已经将它放在.bashrc文件中。
function test(){
if [ ! -n "$1" ]; then
netstat | grep -v 1111;
else
netstat "$1" | grep -v 1111;
fi
}
alias netstat='test'
执行时,有时在执行netstat | grep 1111
时(并非总是如此,并且无法指定在哪种情况下)会创建无限数量的grep进程。
预期结果将返回不带过滤端口的netstat输出。
答案 0 :(得分:4)
不需要别名,您可以使用command
命令来区分函数netstat
和“真实”命令netstat
。
netstat () {
if [ -z "$1" ]; then
command netstat
else
command netstat "$1"
fi | grep -v 1111
}
如果您的实际意图是确定是否有一个参数,而不是简单地确定一个非空参数(即,区分netstat
和netstat ""
),则可以将其减少(在{{ 1}})
bash
如果netstat () {
command netstat "${@:1:1}" | grep -v 1111
}
确实为0,则参数扩展“消失”。
答案 1 :(得分:0)
主要问题是如何在没有完整路径的情况下指定您对$#
的使用。这样您就可以体验递归。
我建议使用类似netstat
的名称。然后您的内部使用可以基于您拥有的NETSTAT完整路径。