【发布时间】:2011-03-27 14:45:11
【问题描述】:
$ cat isbndb.sample | wc -l
13
$ var=$(cat isbndb.sample); echo $var | wc -l
1
为什么将字符串分配给变量时缺少换行符?如何防止换行符转换为空格?
我正在使用 bash。
【问题讨论】:
标签: string bash newline variable-assignment
$ cat isbndb.sample | wc -l
13
$ var=$(cat isbndb.sample); echo $var | wc -l
1
为什么将字符串分配给变量时缺少换行符?如何防止换行符转换为空格?
我正在使用 bash。
【问题讨论】:
标签: string bash newline variable-assignment
您必须引用变量以保留换行符。
$ 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 使其接受文件直到文件结尾。
【讨论】:
var=($(< file))
echo ${#var[@]}
【讨论】: