Bash 在变量中存储命令输出时,如何保留尾随换行符?
在变量中存储命令输出时,是否可以保留尾随换行符Bash 在变量中存储命令输出时,如何保留尾随换行符?,bash,variables,Bash,Variables,在变量中存储命令输出时,是否可以保留尾随换行符 $ echo "foo " # newline appears after foo foo $ MYVAR="$(echo "foo ")" $ echo "${MYVAR}" # newline is stripped foo $ 您可以将sentinel添加到流的末尾: $ my_var=$'foo\n\n' $ captured=$( echo -n "$my_var"; echo -n "x" ) 然后将其删除: $ capture
$ echo "foo
" # newline appears after foo
foo
$ MYVAR="$(echo "foo
")"
$ echo "${MYVAR}" # newline is stripped
foo
$
您可以将sentinel添加到流的末尾:
$ my_var=$'foo\n\n'
$ captured=$( echo -n "$my_var"; echo -n "x" )
然后将其删除:
$ captured=${captured%x}
$ echo "$captured"
bash
手册页明确指出,在命令替换中,从命令输出中删除尾随的换行符。解决问题的方法可能比处理具有多行值的参数更好。您要完成的更大的任务是什么?我想知道如何从可能包含尾随空格的变量中删除第一行,同时保留尾随空格。除此之外,我通过将项目从顶部拉出并推到底部来保持项目的FIFO队列,其中项目是一个可能为空的字符串。我想这也可以通过使用数组来实现。是的,数组要好得多。@JohnKugelman除了我可以在不知道项目当前大小的情况下向列表中添加项目外:MYVAR=“${MYVAR}新项目”
@Coryarray+=(“新项目”)