将函数传递给变量

时间:2018-11-01 12:25:21

标签: bash

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

#!/bin/bash

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


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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

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

echo -e "${DATA}"
相关问题