Linux 通过$@杀死
有人能帮我解释一下我从一本书上得到的剧本吗。练习是编写一个名为Linux 通过$@杀死,linux,bash,Linux,Bash,有人能帮我解释一下我从一本书上得到的剧本吗。练习是编写一个名为killalljobs的脚本,该脚本将终止所有后台作业 为此给出的代码是: kill "$@" $( jobs -p) 我确定我在这里真的很胖。我知道,使用命令替换$(jobs–p)是所有后台作业PID的值。另外,如果脚本使用“killalljobs”命令运行,kill命令将杀死这些作业。我不确定$@是什么?例如,我知道它通常会扩展到运行脚本时给定的参数值 在本例中,这是否意味着提供给killalljobs命令的参数?如果是这
killalljobs
的脚本,该脚本将终止所有后台作业
为此给出的代码是:
kill "$@" $( jobs -p)
我确定我在这里真的很胖。我知道,使用命令替换$(jobs–p)是所有后台作业PID的值。另外,如果脚本使用“killalljobs”命令运行,kill命令将杀死这些作业。我不确定$@
是什么?例如,我知道它通常会扩展到运行脚本时给定的参数值
在本例中,这是否意味着提供给killalljobs命令的参数?如果是这种情况,我不确定您将为killalljobs命令提供哪些参数?
$@
表示“传递给脚本的所有参数”
因此,脚本的计算结果为“杀死
作业返回的所有作业-p
”$@
表示“传递给脚本的所有参数”
因此,脚本的计算结果为“杀死
jobs-p
返回的所有作业”如果您阅读kill
的man
页面(man kill
),它会显示选项:
等等,以便更好地指定任务。因此,它将扩展到
kill -9 pid1 pid2 ... pidn
此外,它还允许您输入额外的pid
s:
killalljobs -9 epid1 epid2 epid3
将用于
kill -9 epid1 epid2 epid3 pid1 pid2 ... pid3
这样不仅可以杀死后台作业,还可以用您自己给脚本的pid
s杀死进程
简短回答:它让用户可以更自由地确定命令的确切行为,并且只需很少的执行工作。如果您阅读
kill
的man
页面(man kill
),它会显示选项:
等等,以便更好地指定任务。因此,它将扩展到
kill -9 pid1 pid2 ... pidn
此外,它还允许您输入额外的pid
s:
killalljobs -9 epid1 epid2 epid3
将用于
kill -9 epid1 epid2 epid3 pid1 pid2 ... pid3
这样不仅可以杀死后台作业,还可以用您自己给脚本的pid
s杀死进程
简短回答:它让用户可以更自由地确定命令的确切行为,并且不需要太多的实现工作。“$@”
是首先为脚本提供的参数,这意味着使用类似于暴力(a)的方式调用它:
将转化为:
kill -9 <pid1> <pid2> ...
kill-9。。。
从bash
手册页,稍作解释:
$@
展开到位置参数,从一开始。当展开发生在双引号内时,每个参数展开为一个单独的字。也就是说,“$@”
相当于“$1”“$2”
(a)
-9
,正如一篇评论中所指出的,通常应该是终止流程的最后手段,因为它“无法讨价还价,无法推理,不会感到怜悯、懊悔或恐惧,而且在流程结束之前,它绝对不会停止”
我只是使用它作为传递参数的示例。“$@”
是首先给定给脚本的参数,这意味着使用类似于暴力(a)的东西调用它:
将转化为:
kill -9 <pid1> <pid2> ...
kill-9。。。
从bash
手册页,稍作解释:
$@
展开到位置参数,从一开始。当展开发生在双引号内时,每个参数展开为一个单独的字。也就是说,“$@”
相当于“$1”“$2”
(a)
-9
,正如一篇评论中所指出的,通常应该是终止流程的最后手段,因为它“无法讨价还价,无法推理,不会感到怜悯、懊悔或恐惧,而且在流程结束之前,它绝对不会停止”
我只是将其用作传递参数的示例。此示例旨在用作完成特定任务的函数(或脚本),但也接受可能变化的参数。 注意:
#!/bin/sh
myfunc()
{
echo kill "$@" $(jobs -p)
}
myfunc -l -L
myfunc -l
此示例旨在用作完成特定任务的函数(或脚本),但也接受可能变化的参数。 注意:
#!/bin/sh
myfunc()
{
echo kill "$@" $(jobs -p)
}
myfunc -l -L
myfunc -l
只有很小的注释(+1 btw),也许应该警告不要使用
-9
;因为这是一种终止进程的糟糕方式。。。。因为当它绝对地、肯定地必须立即停止时!:-)但是我已经根据你的建议添加了一条注释,谢谢,@CommuSoft。只有一条小评论(+1 btw),也许应该警告不要使用-9
;因为这是一种终止进程的糟糕方式。。。。因为当它绝对地、肯定地必须立即停止时!:-)但是我已经按照你的建议添加了一条注释,谢谢@CommuSoft。你没有解释“$@”
在那里做什么。无论“$@”
,该解释句都是正确的。您未能解释“$@”
在那里做了什么。无论“$@”
,该解释句都是正确的。