在终端和脚本中逐步运行相同的命令获得不同的结果

在终端和脚本中逐步运行相同的命令获得不同的结果
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.它适用于两种外壳。感谢克里斯托弗的评论。

相关内容