Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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 - Fatal编程技术网

将函数传递给变量时Bash中缺少新行

将函数传递给变量时Bash中缺少新行,bash,Bash,在这种情况下,为什么不在Bash中生成新行: #!/bin/bash function sample() { local DATA="" DATA="test1"$'\n' DATA="${DATA}test2"$'\n' echo ${DATA} } DATA=$(sample) printf "%s" "${DATA}" 您必须使用echo的-e选项才能解释\n字符: echo -e "${DATA}" $DATA展开,在echo运行之前,所有空格(

在这种情况下,为什么不在Bash中生成新行:

#!/bin/bash

function sample() {
    local DATA=""
    DATA="test1"$'\n'
    DATA="${DATA}test2"$'\n'
    echo ${DATA}
}


DATA=$(sample)
printf "%s" "${DATA}"

您必须使用echo的-e选项才能解释\n字符:

echo -e "${DATA}"

$DATA
展开,在
echo
运行之前,所有空格(包括换行符)都用于分词。您应该始终引用参数展开式

sample() {
    local DATA=""
    DATA="test1"$'\n'
    DATA="${DATA}test2"$'\n'
    echo "${DATA}"
}

echo${DATA}
替换为
echo“${DATA}”
;不引用参数展开式就是在丢弃它们。
\n
数据中没有
\n
有向图,只有文字换行符,这是由于
$“…”
引用。