Ve prospěch lidí, kteří se sem dostali kliknutím na první výsledek vyhledávání po googlování „bash printf escaped“, správný způsob, jak použít printf ke generování textu uniklého bash, je:
printf " %q" "here is" "a few\n" "tests"
Který výstup (bez konce nového řádku):
here\ is a\ few\\n tests
Zkuste
printf "%s\n" "$string"
Viz printf(1)
Můžete použít $' '
pro uzavření nových řádků a znaků tabulátoru, pak obyčejný echo
bude stačit:
#!/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
Udělal jsem také několik dalších menších změn ve vašem skriptu. Kromě toho, že jsem vaši FUNCTION_NAME nastavil malými písmeny, použil jsem také syntaxi funkce, která je více kompatibilní. V tomto případě to není velká výhoda (jako $' '
strings jsou stejně rozšíření bash), ale není důvod používat function func()
syntaxi, pokud vím. Také rozsah string
může být také lokální pro funkci, ve které se používá, takže jsem to také změnil.
Výstup:
The path to K:\Users\ca, this is good
The second line 123
It also has to be 100% nice than %99
Mohu poznamenat, že "man printf" jasně ukazuje, že znak "%" musí uniknout pomocí jiného "%", takže printf "%%" má za následek jediné "%"