Можно сделать, используя PROMPT_COMMAND
MAXLINES=10
tmp_out=/tmp/$.output
PROMPT_COMMAND='touch "$tmp_out"; tail -n "$MAXLINES" "$tmp_out" >/dev/stdin; exec >"$tmp_out"'
Как это работает
tmp_out=/tmp/$.output
временный файл, используемый для хранения результатов команды tail -n "$MAXLINE" "$tmp" > /dev/stdin
: показывать первые максимумы вывода exec > "$tmp_out"
: очистить временный файл и перенаправляет вывод текущего процесса (дескриптор файла 1) в этот файл, в случае, если stderr также может быть перенаправлен в другой файл для усечения (например, 2> "$tmp_err"
). Для запуска команды без перенаправления
exec >/dev/stdin; ... the command
или (пробел после {
важен)
{ the command;}>/dev/stdin
Извлечение начальных настроек
unset PROMPT_COMMAND; exec >/dev/stdin
Вы не можете использовать этот синтаксис, чтобы сделать это в рубине. Я рекомендовал бы синтаксис хеша для этого.
def foo(args={})
args[:fruit] ||= 'apple'
args[:cut] ||= 'sliced'
args[:topping] ||= 'ice cream'
# some logic here
end
foo(:topping => 'hot fudge')
Вы могли также сделать это использование позиционные параметры:
def foo(fruit=nil,cut=nil,topping=nil)
fruit ||= 'apple'
cut ||= 'sliced'
topping ||= 'ice cream'
# some logic here
end
foo(nil,nil,'hot fudge')
Примите во внимание, что оба из этих методов препятствуют тому, чтобы Вы передали фактический nil
аргументы функциям (когда Вы могли бы хотеть иногда),
Нет. Необходимо проверить значение параметров в функциональном нечто. Если они - пустая строка или пустой указатель, можно установить их на параметр по умолчанию.