代码之家  ›  专栏  ›  技术社区  ›  turtledove

变量插值期间的bash行连接

  •  3
  • turtledove  · 技术社区  · 16 年前
    $ cat isbndb.sample | wc -l
    13
    $ var=$(cat isbndb.sample); echo $var | wc -l
    1
    

    我在用bash。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Dennis Williamson    16 年前

    必须引用变量以保留换行符。

    $ var=$(cat isbndb.sample); echo "$var" | wc -l
    

    以及 cat 在这两种情况下都是不必要的:

    $ wc -l < isbndb.sample
    $ var=$(< isbndb.sample); echo "$var" | wc -l
    

    编辑:

    Bash通常会在将文件的内容分配给变量时,从文件中去掉多余的尾随换行符。你必须采取一些技巧来保存它们。试试这个:

    IFS='' read -d '' var < isbndb.sample; echo "$var" | wc -l
    

    IFS 设置为null可防止文件在换行时被拆分,并为其设置分隔符 read 如果为null,则它将接受文件,直到文件结束。

        2
  •  0
  •   ghostdog74    16 年前
    var=($(< file))
    echo ${#var[@]}
    
    推荐文章