Why in this case doesnt generate new lines in Bash:
#!/bin/bash
function sample() {
    local DATA=""
    DATA="test1"$'\n'
    DATA="${DATA}test2"$'\n'
    echo ${DATA}
}
DATA=$(sample)
printf "%s" "${DATA}"
Why in this case doesnt generate new lines in Bash:
#!/bin/bash
function sample() {
    local DATA=""
    DATA="test1"$'\n'
    DATA="${DATA}test2"$'\n'
    echo ${DATA}
}
DATA=$(sample)
printf "%s" "${DATA}"
 
    
    $DATA is expanded, and all whitespace (including newlines) are used for word-splitting, before echo ever runs. You should always quote parameters expansions.
sample() {
    local DATA=""
    DATA="test1"$'\n'
    DATA="${DATA}test2"$'\n'
    echo "${DATA}"
}
 
    
    You must use the -e option of echo for it to interpret the \n character:
echo -e "${DATA}"
