【问题标题】:ps -ef | wc -l adds tab to the front of the lineps -ef | wc -l 将制表符添加到行首
【发布时间】:2014-01-21 14:35:35
【问题描述】:

我正在尝试存储 ps 的输出并稍后进行比较。
我正在使用以下行:

siteminder_running=`ps -ef | grep $iplanet_home | grep LLAWP | wc -l`

当我尝试比较输出时,我发现变量的数字前面有一个制表符。

这是输出:

-       0- value

可能是什么问题?

【问题讨论】:

  • 我不确定问题出在哪里,但您可以通过消除wc 来规避它:您可以将grep LLAWP | wc -l 替换为grep -c LLAWP
  • 这是什么输出?请更新您的问题以显示产生该输出的确切命令。

标签: bash ps wc


【解决方案1】:

就像 ruakh 指出的那样,您可以使用 grep -c

siteminder_running=`ps -ef | grep $iplanet_home | grep -c LLAWP`

一般来说,为了修复空白,我使用xargs echo,如下所示:

siteminder_running=`ps -ef | grep $iplanet_home | grep LLAWP | wc -l | xargs echo`

【讨论】:

    【解决方案2】:

    大多数 Unix 和 GNU/Linux 发行版提供的 wc(1) 实用程序打印到用户终端输入文件名和计数(行数/字符数/您要求它打印的内容),由 TAB 分隔。

    在标准输入的情况下,没有输入文件名,导致count前面只有一个TAB。

    有几种方法可以规避这种情况,例如:

    ps -ef | grep $iplanet_home | grep LLAWP | wc -l | awk '{ printf "%d\n", $0 }'
    printf $(ps -ef | grep $iplanet_home | grep LLAWP | wc -l)
    ps -ef | grep $iplanet_home | grep LLAWP | wc -l | sed -e 's/^[ \t]*//'
    

    如前所述,这些只是示例,实际上有几十种方法可以实现。

    【讨论】:

    • 正如他在上面评论中指出的那样,最有效的方法是...| grep -c LLAWP。祝大家好运。
    • 一开始就知道为什么标签会在那里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    相关资源
    最近更新 更多