grep无效
执行如下命令:
ps aux|grep -n redis-server|grep -v grep
能正常找到redis-server的进程信息。
(注:grep -v grep是为了在结果中排除掉grep自身的进程信息)
但是写成别名:
alias pg="ps aux|grep -n $@|grep -v grep"
,
然后再执行:
pg redis-server
提示如下:
grep: redis-server: No such file or directory
请问是哪里错了?谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
锅了,锅了,确实不行哈,昨天晚上在家没法验证,有点想当然了。早上来公司了~那么来探究一下,为啥不生效吧。
在 bash 的 man 文档中关于位置参数有这样一句话:
也就是说,当没有调用函数时,位置变量始终是启动 bash 时传递的参数,默认是空值。
楼上老哥的回答中,不使用位置参数也同样生效
如果想要使用位置参数,可以使用函数式写法,或利用函数写入别名,
source
之后直接使用当然直接更换位置,向楼上老哥的写法也是 OK 的。
把顺序掉换一下就好了
对于
$@
来讲, 符号后面的都是参数可以看出,
pg abc
执行的结果是即,
grep -v grep
也是$@
代表的一部分,被 bash 解析代入了.