当使用 space 传递函数参数时,grep 尝试从文件而不是通过管道读取
grep tries to read from a file instead of through pipe when passing function arguments with a space
我正在尝试编写一个函数来按名称查找所有进程,然后让您一个一个地向它们发送信号。这是我无法正常工作的最小代码部分:
ps -ef | grep "$@"
如果我用
ab cd
作为函数的输入,我希望它生成
ps -ef | grep "ab cd"
而是生成
ps -ef | grep ab cd
在文件 'cd' 中查找 'ab'。
你想要 "$*"
,而不是 "$@"
。 This answer 进入细节,但基本上 "$@"
单独引用每个参数,而 "$*"
引用整个混乱。所以,"$@"
等同于 "ab" "cd"
; "$*"
等同于 "ab cd"
.
我正在尝试编写一个函数来按名称查找所有进程,然后让您一个一个地向它们发送信号。这是我无法正常工作的最小代码部分:
ps -ef | grep "$@"
如果我用
ab cd
作为函数的输入,我希望它生成
ps -ef | grep "ab cd"
而是生成
ps -ef | grep ab cd
在文件 'cd' 中查找 'ab'。
你想要 "$*"
,而不是 "$@"
。 This answer 进入细节,但基本上 "$@"
单独引用每个参数,而 "$*"
引用整个混乱。所以,"$@"
等同于 "ab" "cd"
; "$*"
等同于 "ab cd"
.