有人能帮我解释一下我从一本书中得到的剧本吗?练习是编写一个名为killalljobs的脚本来终止所有后台作业。
给出的代码是:

  kill "$@" $( jobs -p)

我确定我在这里很胖。我知道使用命令替换$(jobs–p)是所有后台作业PID的值。另外,如果脚本使用“killalljobs”命令运行,kill命令将杀死这些作业。我不确定$@是什么?我知道它通常会扩展到运行脚本时给定的参数值。
在这种情况下,这是否意味着给killalljobs命令的参数?我不确定如果是这样的话,你会给killalljobs命令什么参数?

最佳答案

"$@"是最初给脚本的参数,这意味着用类似暴力(a)的方式调用脚本:

killalljobs -9

将转换为:
kill -9 <pid1> <pid2> ...

bash手册页中,略作解释:
$@展开到位置参数,从一开始。当扩展出现在双引号中时,每个参数将扩展为一个单独的单词。也就是说,"$@"等同于"$1" "$2"
(a)-9如一项评论所指出,一般来说,这应该是杀戮过程的最后手段,因为它“不能讨价还价,不能推理,不感到遗憾,或懊悔,或恐惧,而且它绝对不会停止,直到过程结束”。
我只是用它作为传递参数的例子。

关于linux - 传递$ @杀死,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33020149/

10-09 03:53