BASH: попытка продолжить строку на другой строке без пробела

У меня есть сценарий BASH с условием, подобным этому:

dirImg="/var/log/junk"
sizeLimitMsg="1 gig"

if [ 0 == "$fileSize1" ];then
    echo "All directories under $dirImg are within the allowed\
    $sizeLimitMsg size limit" >> $emailBody
else
    #do something else
fi

Он производит вывод с дополнительным пробелом:

All directories under /var/log/junk are within the allowed   1 gig size limit

Я предполагаю, что дополнительное и нежелательное пустое пространство возникает из-за отступа переменной $sizeLimitMsg в условном выражении выше.

Могу ли я в любом случае продолжить эту строку и сделать отступ в этом коде, не получая лишних и нежелательных пробелов?


person Steve    schedule 27.11.2018    source источник
comment
Уберите кавычки.   -  person Cyrus    schedule 28.11.2018


Ответы (2)


Не включайте отступ в кавычки:

echo "All directories under $dirImg are within the allowed" \
     "$sizeLimitMsg size limit"
person choroba    schedule 27.11.2018

Альтернатива:

printf "%s %s\n" "All directories under ${dirImg} are within the allowed" \
    "${sizeLimitMsg} size limit" >> "${emailBody}"
person Walter A    schedule 27.11.2018
comment
Или, возможно, printf 'All directories under %s are within the %i size limit\n' "$dirImg" "$sizeLimitMsg", возможно, с экранированной новой строкой после строки формата, если хотите. - person tripleee; 28.11.2018
comment
@tripleee Я согласен, что это более приятный формат. Пытаюсь защитить свой худший формат: я боюсь, что ОП попытается добавить случайный текст в строку формата и изменит сообщение на printf "All directories under %s are safe under the %s % limit\n" "${dirImg}" "${percUsageAllowed}", не экранируя %. - person Walter A; 28.11.2018