我有个剧本里面有这个:
su - jenkins sh -c "ps xu | grep sneakers | grep -v grep | awk '{print $2}' | xargs -r kill"这是我得到的错误:
line 10: $2: unbound variable我认为我可以通过在脚本顶部将这个set -eu更改为set -e来解决这个问题。但是移除u,我得到了不同类型的错误:
kill: invalid argument c
Usage:
kill [options] <pid> [...]
Options:
<pid> [...] send signal to every <pid> listed
-<signal>, -s, --signal <signal>
specify the <signal> to be sent
-l, --list=[<signal>] list all signal names, or convert one to a name
-L, --table list all signal names in a nice table
-h, --help display this help and exit
-V, --version output version information and exit
For more details see kill(1).在这里,我不会用任何参数来开始我的脚本,但是awk部分应该是本地的,而不是全局的(我不理解bash作用域,如果你不知道的话)。
我该如何解决这个问题?
发布于 2020-10-09 12:45:00
我有一个脚本,里面有这样的内容:
blabalabl "blabla $2 blabla“
当然-- $2在双引号内,所以它正在被扩展。同样的方式:
echo "$2"扩展$2。解决方案是避免$2扩展。
sh -c "ps xu | grep sneakers | grep -v grep | awk '{print \$2}' | xargs -r kill"但整条线路都很糟糕。不要使用ps | grep | grep -v grep --为此使用pgrep。要在linux上杀人,您可以只需:
su - jenkins pkill sneakers发布于 2020-10-09 12:44:40
我建议您使用pkill -f sneakers命令。
su - jenkins sh -c "pkill -f sneakers"它既干净又干净。如果失败,添加-9信号。
su - jenkins sh -c "pkill -9 -f sneakers"https://stackoverflow.com/questions/64280144
复制相似问题