当使用空格传递函数参数时,grep尝试从文件而不是通过管道读取

时间:2015-01-08 02:08:33

标签: bash

我正在尝试编写一个能够按名称查找所有进程的函数,然后让您逐个向它们发送信号。以下是我无法正常工作的最小部分代码:

ps -ef | grep "$@"

如果我用过

ab cd

作为函数的输入,我希望生成

ps -ef | grep "ab cd"

但它会生成

ps -ef | grep ab cd

寻找' ab'在文件' cd'。

1 个答案:

答案 0 :(得分:2)

您需要"$*",而不是"$@"This answer详细介绍,但基本上"$@"分别引用每个参数,而"$*"引用整个混乱。因此,"$@"相当于"ab" "cd"; "$*"相当于"ab cd"