Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在变量中存储命令输出时,如何保留尾随换行符?_Bash_Variables - Fatal编程技术网

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}新项目”
@Cory
array+=(“新项目”)