终端和脚本中的命令产生不同的结果

时间:2017-12-26 06:02:38

标签: linux bash shell

我正在使用Ubuntu 16.04 LTS,我尝试grep某些进程的PID。以下是我在终端中所做的事情:

# ps aux | grep xorg | grep -v 'grep' | awk '{print $2}'

执行上述命令后,我得到结果:

2367

然而,我创建了一个名为t.sh的脚本,如下所示:

#!/bin/bash
a=$(ps aux | grep $1 | grep -v 'grep' | awk '{print $2}')
echo $a

我执行它:./t.sh xorg 但我得到:2367 57270 57271

我不知道这两个数字来自哪里。我只知道当我执行./t.sh xorg并且它们相邻(n和n + 1)时,这两个数字总是会改变。

我刚发现另一件事: 如果我将xorg修复到脚本中,而不是传递参数,那么这两个数字将会消失。

#!/bin/bash
a=$(ps aux | grep xorg | grep -v 'grep' | awk '{print $2}')
echo $a

此脚本将按预期工作。

重复的问题

Different results between ps aux and `ps aux` inside a script

阅读帖子后,我仍然不知道如何解决问题。

0 个答案:

没有答案