【发布时间】:2014-09-28 01:16:54
【问题描述】:
[上下文]
例 1:
a="$(echo $'\n\n\n\n\n')"; echo ${#a};
我明白了: 0
例 2:
a="$(echo $'\n\n\n\n\n_')"; echo ${#a};
我明白了: 6
[问题/疑问]
我需要保留分配给变量的所有尾随空行。如何重写«Eg.1»?如果可能,请给出最简单的解决方案。
[解决方案]
我会接受 rici 答案的变体 2。
to()
{
local to=${1};
IFS= read -rd '' ${to};
printf -v ${to} "${!to%$'\n'}";
};
…
# a="$(echo $'\n\n\n\n\n')"; # wrong
to a < <(echo $'\n\n\n\n\n');
…
# aVariable="$(some_command arg_1 … arg_n)"; # wrong assignment
to aVariable < <(some_command arg_1 … arg_n);
附:上面两条线(即错误线和有效线)的长度几乎相等。
【问题讨论】:
-
@chepner 这很相似,但不是重复的恕我直言。正如我即将回答的那样,最好将
mapfile用于数组中以跟踪单独的行。mapfile a < <(echo $'\n\n\n\n\n'); echo ${#a[@]}.
标签: bash command output newline trim