Вернуть длинное целое число из функции в ksh

i означает, что оболочка интерактивна.

Это описано в разделе справочной страницы, в котором обсуждаются обстоятельства, при которых оболочка является интерактивной:

Интерактивная оболочка запускается без необязательных аргументов и без -c вариант, чей стандартный ввод и ошибка подключены к терминалам (как определено isatty(3)), или один началось с опции -i. PS1 установлен, а $- включает i, если bash является интерактивным, позволяя оболочке сценарий или файл запуска для проверки этого состояния.

Интерактивный характер оболочки определяется во время инициализации, и ее эффекты не меняются в течение всего времени существования оболочки; вот почему set не сообщает i как флаг, который можно изменить. В версии 4.3 Bash допустимы set -i или set +i, но они не имеют никакого эффекта, кроме внутреннего изменения флага forced_interactive (и это флаг читается только во время инициализации). В версии 4.4 они выдают сообщение об ошибке. Вы можете увидеть подробности обработки флагов в flags.c в исходном коде Bash.

1
19.01.2016, 14:45
1 ответ

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)
-1
28.01.2020, 02:12

Теги

Похожие вопросы