Вероятно, безопасно предположить, что удар заменит пустыми переменными с 0 в любой довольно недавней системе.
Поскольку это документируется в страницу справочника для удара 4.2, это - конечно, зарегистрированное поведение, по крайней мере, с той версии. Как это описано как поведение тот путь (но недокументированное) в Усовершенствованном Руководстве по созданию сценариев Bash, можно ожидать, что поведение в любой версии удара было доступно, когда это было записано. Это, вероятно, возвращается к очень ранним версиям удара.
Если Вы захотите быть АБСОЛЮТНО строгими, однако, то необходимо будет проверить документацию на все версии удара, которые Вы хотите поддерживать, и Вы не можете сделать предположения ни об одной из тех версий, которые явно не документируют поведение.
Я не думаю, что необходимо быть абсолютно строгими, но если Вы не рискуете, можно использовать foo=${foo:-0}
явно установить неопределенные переменные на 0 перед использованием их. Пример:
foo=1
foo=${foo:-0}
bar=${bar:-0}
echo "before math: foo=$foo, bar=$bar"
let 'foo += 2'
let 'bar += 2'
echo "after math: foo=$foo, bar=$bar"
Вывод:
before math: foo=1, bar=0
after math: foo=3, bar=2
Функция «прозрачности» предполагает, что приложения, которые запускаются в терминале, не устанавливают явно цвет фона. В частности, при очистке фона эти приложения не должны устанавливать цвет. Это соответствует функции терминала, известной как стирание заднего цвета или bce
.
Запись TERM = screen-256color
сообщает приложениям, что они должны установить цвет при очистке дисплея (чтобы гарантировать использование текущего цвета). Существует другое описание терминала screen-256color-bce
, которое будет делать то, что вы хотите в этом случае.
Дополнительная литература: