使用wc -l命令时出现意外的前导空格

时间:2015-08-28 07:21:22

标签: perl unix wc

我正在尝试执行以下命令 - 但输出引入了一些前导空格。

ls -lrt | wc -l
     29
echo $SHELL
/bin/bash

当我在另一台机器上运行相同的命令时,输出是预期的。

ls -lrt | wc -l
183
echo $SHELL
/bin/bash

前导空格导致我的perl验证失败

unless ( $phCountRet->{COUNT} =~ /^\d+$/ ){
...
}

我可以选择修剪前导空格,然后进行验证,但它不是一个干净的解决方案。

任何可能导致此问题的指针都将是一个很大的帮助。

2 个答案:

答案 0 :(得分:2)

使用

unless ( $phCountRet->{COUNT} =~ /^\s*\d+$/ ){

这也与前面的空白数字匹配。

答案 1 :(得分:0)

正如我在 WC on OSX - Return includes spaces 中所提到的,这是一个实现细节,在POSIX标准中并不明确(因此它取决于实现者对的偏好对齐列 - 或不。)