i
означает, что оболочка интерактивна.
Это описано в разделе справочной страницы, в котором обсуждаются обстоятельства, при которых оболочка является интерактивной:
Интерактивная оболочка запускается без необязательных аргументов и без
-c
вариант, чей стандартный ввод и ошибка подключены к терминалам (как определеноisatty(3)
), или один началось с опции-i
.PS1
установлен, а$-
включаетi
, еслиbash
является интерактивным, позволяя оболочке сценарий или файл запуска для проверки этого состояния.
Интерактивный характер оболочки определяется во время инициализации, и ее эффекты не меняются в течение всего времени существования оболочки; вот почему set
не сообщает i
как флаг, который можно изменить. В версии 4.3 Bash допустимы set -i
или set +i
, но они не имеют никакого эффекта, кроме внутреннего изменения флага forced_interactive
(и это флаг читается только во время инициализации). В версии 4.4 они выдают сообщение об ошибке. Вы можете увидеть подробности обработки флагов в flags.c
в исходном коде Bash.
return
устанавливает статус выхода функции, и это число между 0
и 255
. Если число больше этого, вы получаете его значение mod 256, а 20150225 % 256
- это 209
.
Чтобы получить строку на выходе из функции, функция должна отправить ее эхом, а затем вы можете перехватить ее в вызывающей функции с помощью подстановки команд.
function convert_date_to_long {
echo "${1}${2}${3}"
}
some_var=$(convert_date_to_long 2015 02 25)