pid=$(pgrep 'engrampa') #Get the PID of the engrampa processes .
killpid=$(echo $pid | head -1) #Get only the first line of the $pid variable and put into a new variable called $killpid.
kill $killpid
我只想保留变量的第一行$pid
。
假设我有 3 个engrampa
打开的进程实例。
当我在终端逐步运行上述命令时,我得到了我想要的:2590
https://i.stack.imgur.com/L3U2g.jpg
当我在脚本中运行这些 exaclty 命令时,我得到以下结果:2590 18425 18449
https://i.stack.imgur.com/RuGX9.jpg
为什么会发生这种情况?
答案1
编辑:由于 Steeldriver 的评论,确定了我的问题。
跑echo $pid | head -1
进去bash
什么也不做。在 shell 中运行相同的命令zsh
我得到了我想要的。
bash shell 输出 ->2590 18425 18449
zsh shell 输出 ->2590
话虽这么说,我的问题已经解决,将脚本的 shell 更改为#!/bin/zsh
.
编辑:另一个更合适的解决方案是echo $pid | awk '{print $1}'
使用echo $pid | head -1
.它适用于两种外壳。感谢克里斯托弗的评论。