gpt4 book ai didi

linux - xargs 的 $1 与 shell 脚本中的 $1 冲突

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:26 34 4
gpt4 key购买 nike

我在一个 shell 脚本文件 foo.sh 中有这些行:

ps ax | grep -E "bar" | grep -v "grep" | awk '{print $1}' | xargs kill -9 $1

当我使用这样的参数执行 shell 脚本时:

sh foo.sh arg_one

xargs 现在不能工作了。它从 shell 脚本中获取 $1 而不是 awk 的输出。

我知道我可以将 awk 的输出存储到一个文件中,稍后在 xargs 中使用它。

但是,有没有更好的解决办法呢?

== 已编辑 ==

感谢@peterph 的回答。但是,有什么办法可以在 xargs 中使用 $1 吗?

== 编辑 2 ==

谢谢@Brian Campbell

尽管示例中应该有一个无用的 $1,但如果给出了“shell 脚本文件”的参数,那么 xargs 中的 $1 将不会像我希望的那样在我的计算机中工作(在你的计算机中,我思考)。为什么?以及如何避免它?

最佳答案

xargsstdin 读取列表,所以如果您想要通过 PID 终止进程,只需丢弃行中的最后一个 $1

作为旁注,ps 还可以根据命令名称打印进程(Linux 上的 procps 请参阅 -C 选项)。

关于linux - xargs 的 $1 与 shell 脚本中的 $1 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13569049/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com