为什么我使用bash-x时num是错误的

  • 本文关键字:num 错误 bash-x bash wc
  • 更新时间 :
  • 英文 :


当我计算进程的数字以使用wc -l时,命令行中的数字是2,但在shell脚本中发现是4,发生了什么?

$ ps -ef |grep -v grep |grep etcd  |wc -l
2
$ bash -x count.sh etcd
++ ps -ef
++ grep -v grep
++ grep etcd
++ wc -l
+ num=4
+ case $1 in
+ echo 4
4

外壳脚本

#!/usr/bin/env bash
num=$(ps -ef |grep -v grep |grep etcd  |wc -l)
case $1 in
etcd) 
echo ${num}
;;
*) 
echo  "other"
;;
esac

我猜您调用的脚本带有一个参数:count.sh etcd。脚本本身将是ps输出的一部分,这会增加结果。

使用pgrep,它适用于

pgrep -c etcd

我进一步建议使用-x(精确匹配(参数,以防止其与etcdctl匹配,例如:

pgrep -xc etcd

#!/usr/bin/env bash
num=$(pgrep -xc etcd)
case $1 in
etcd) 
echo "${num}"
;;
*) 
echo  "other"
;;
esac

相关内容

  • 没有找到相关文章

最新更新