В методе, которые берут несколько дополнительных параметров, как кто-либо, но первое может быть определено?

Можно сделать, используя 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 временный файл, используемый для хранения результатов команды
  • [116 ]: создать пустой файл, если его не существует, чтобы команда tail не вызывала ошибки при первом вызове
  • 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
9
задан Scott Miller 29 March 2009 в 21:38
поделиться

2 ответа

Вы не можете использовать этот синтаксис, чтобы сделать это в рубине. Я рекомендовал бы синтаксис хеша для этого.

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 аргументы функциям (когда Вы могли бы хотеть иногда),

18
ответ дан 4 December 2019 в 06:10
поделиться

Нет. Необходимо проверить значение параметров в функциональном нечто. Если они - пустая строка или пустой указатель, можно установить их на параметр по умолчанию.

2
ответ дан 4 December 2019 в 06:10
поделиться
Другие вопросы по тегам:

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