【问题标题】:why the num is wrong when I use bash -x为什么当我使用 bash -x 时 num 是错误的
【发布时间】:2020-11-04 08:17:47
【问题描述】:

当我用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

shell 脚本

#!/usr/bin/env bash

num=$(ps -ef |grep -v grep |grep etcd  |wc -l)

case $1 in
etcd) 
    echo ${num}
;;

*) 
   echo  "other"

;;
esac

【问题讨论】:

    标签: bash wc


    【解决方案1】:

    我猜你正在调用带有参数的脚本: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      相关资源
      最近更新 更多