如何解决为什么在使用bash -x时num是错误的
当我计算要使用的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
解决方法
我猜您正在使用以下参数调用脚本: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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。