当使用 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".