A beneficio delle persone che sono arrivate qui facendo clic sul primo risultato di ricerca dopo aver cercato su Google "bash printf escaped", il modo corretto di utilizzare printf per generare testo con escape bash è:
printf " %q" "here is" "a few\n" "tests"
Quale output (senza una nuova riga finale):
here\ is a\ few\\n tests
Prova
printf "%s\n" "$string"
Vedere printf(1)
Puoi usare $' '
per racchiudere le nuove righe ei caratteri di tabulazione, quindi un semplice echo
sarà sufficiente:
#!/bin/bash
get_lines() {
local string
string+='The path to K:\Users\ca, this is good'
string+=$'\n'
string+='The second line'
string+=$'\t'
string+='123'
string+=$'\n'
string+='It also has to be 100% nice than %99'
echo "$string"
}
get_lines
Ho anche apportato un paio di altre modifiche minori al tuo script. Oltre a rendere la tua FUNCTION_NAME minuscola, ho utilizzato anche la sintassi della funzione più ampiamente compatibile. In questo caso, non c'è un grande vantaggio (come $' '
strings sono comunque un'estensione bash) ma non c'è motivo di usare function func()
sintassi per quanto ne so. Inoltre, l'ambito di string
potrebbe anche essere locale rispetto alla funzione in cui viene utilizzato, quindi ho cambiato anche quello.
Uscita:
The path to K:\Users\ca, this is good
The second line 123
It also has to be 100% nice than %99
Posso notare che "man printf" mostra chiaramente che un carattere "%" deve essere sfuggito per mezzo di un altro "%", quindi printf "%%" risulta in un singolo "%"