Может быть, люди придут сюда с той же проблемой, что и я:
эхо \ n внутри кода, обернутого в backsticks. Небольшой совет:
printf "astring\n"
# and
printf "%s\n" "astring"
# both have the same effect.
# So... I prefer the less typing one
Краткий ответ:
# Escape \n correctly !
# Using just: printf "$myvar\n" causes this effect inside the backsticks:
printf "banana
"
# So... you must try \\n that will give you the desired
printf "banana\n"
# Or even \\\\n if this string is being send to another place
# before echoing,
buffer="${buffer}\\\\n printf \"$othervar\\\\n\""
Одна распространенная проблема заключается в том, что если вы делаете внутри кода:
echo 'Tomato is nice'
при окружении бэкстиками выдает ошибку
command Tomato not found.
Обходной путь - добавить другое echo -e или printf
printed=0
function mecho(){
#First time you need an "echo" in order bash relaxes.
if [[ $printed == 0 ]]; then
printf "echo -e $1\\\\n"
printed=1
else
echo -e "\r\n\r$1\\\\n"
fi
}
Теперь вы можете отлаживать свой код, выполняя подсказку просто:
(prompt)$ `mySuperFunction "arg1" "etc"`
Вывод будет приятно
mydebug: a value
otherdebug: whathever appended using myecho
a third string
и внутренняя отладка с помощью
mecho "a string to be hacktyped"