【问题标题】:echo prints too many spacesecho 打印太多空格
【发布时间】:2016-07-06 16:04:12
【问题描述】:

我在echo 中有两个变量的代码。我不知道为什么它会在 $NEXT 之前打印空格,即使我的代码中只有一个空格。

NEXT=$(find "${DIR}" -type f -name "*.$ext" | sed "s/.*\/\.//g" | sed "s/.*\///g" |
sed -n '/.*\..*/p' | wc -l)
echo "Files .$ext: $NEXT"

Files .tar:        1

【问题讨论】:

  • 如果您需要帮助,您需要提供所有相关代码。
  • $NEXT 要么包含空格,要么是一个制表符。
  • 我的错...现在应该没问题了。
  • $NEXT 之前是空格。
  • 您的评论指定如何设置$NEXT 需要在问题中。

标签: bash unix posix dash-shell


【解决方案1】:

如果最后一行是输出,那么它似乎是显示代码之外的其他内容的输出。当您的输出看起来很奇怪时,请尝试在每个变量周围加上单引号:

echo "  Average file size .'$ext': '$AEXT'"

这样,您将知道空格(或制表符)是来自变量本身还是来自脚本。

【讨论】:

    【解决方案2】:

    您的find 表达式没有按照您的想法进行:

    NEXT=$(find "${DIR}" -type f -name "*.$ext" | sed "s/.*\/\.//g" | sed "s/.*\///g" |
    sed -n '/.*\..*/p' | wc -l)
    

    当您管道wc -l时,您会得到一个数字。数字的格式将取决于您的发行版默认编译选项wc。虽然通常当信息管道重定向wc时,返回的值应该没有任何前导空格(但不能保证您安装的wc会起作用那样)。所有你可以做的测试并查看结果,例如

    ls "$HOME" | wc -l
    

    如果在值之前返回空格 -- 你已经找到了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 2013-12-11
      • 1970-01-01
      相关资源
      最近更新 更多