Какова команда “вызывающей стороны”?

Выезд после вопроса в суперпользователе:

https://superuser.com/questions/184643/override-dns-in-firefox

Если обсужденные опции и ТАК ссылка не являются эффективными решениями, затем проверьте:

https://superuser.com/questions/100239/hostname-override-in-firefox

Особенно выезд:

https://addons.mozilla.org/en-US/firefox/addon/redirector/

Это кажется, что это дополнение могло помочь - но я завишу от его фактической реализации.

12
25.08.2011, 00:22
3 ответа

Выполненный

type caller

и Вы будете видеть, что это - встроенная оболочка. Выполнение

help caller

покажет его функцию, сообщил также в странице руководства удара. Кратко

Return the context of the current subroutine call.

16
27.01.2020, 19:54
  • 1
    Потрясающий. Мало того, что я изучал то, что делает та команда, я также изучаю команду "типа". Спасибо :) –   24.08.2011, 17:00
  • 2
    имеет встроенное help –  nibot 24.08.2011, 20:55
  • 3
    Который я мог upvote дважды для обучения не только ответ, но и процесс также. –  dmckee --- ex-moderator kitten 24.08.2011, 21:36
  • 4
    @Muu, @nibot, @dmckee: также type type, type help, help type и help help могла быть забава выполнить :) –  enzotib 24.08.2011, 21:48

Это - оболочка встроенная команда: man bash (Затем поиск 'вызывающей стороны')
Это может использоваться для печати отслеживания стека.

2
27.01.2020, 19:54
  • 1
    Спасибо, хотя я выбрал ответ enzotib как он также, преподавало мне 'тип'. Большое спасибо, хотя :) –   24.08.2011, 17:01

Встроенная команда вызывающего (не указана в POSIX) появилась в Bash версии 3.0 и возвращает контекст любого активного вызова подпрограммы. . См .: Bash-Builtins для дополнительной информации.

Синтаксис:

caller [FRAMENUMBER]

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

Без каких-либо параметров вызывающий отображает номер строки и исходное имя файла текущего вызова подпрограммы.

Проверьте следующее Простая трассировка стека на Bash Hackers Wiki :

#!/bin/bash

die() {
  local frame=0
  while caller $frame; do
    ((frame++));
  done
  echo "$*"
  exit 1
}

f1() { die "*** an error occured ***"; }
f2() { f1; }
f3() { f2; }

f3

Вывод:

12 f1 ./callertest.sh
13 f2 ./callertest.sh
14 f3 ./callertest.sh
16 main ./callertest.sh
*** an error occured ***

Вот пример приличной функции die для отслеживания ошибок в умеренно сложных скриптах. :

{ bash /dev/stdin; } <<<$'f(){ g; }\ng(){ h; }\nh(){ while caller $((n++)); do :; done; }\nf'

Для более сложной отладки доступны расширенные функции отладки Bash и ряд специальных параметров, которые дают более подробную информацию, чем вызывающий объект (например, BASH_ARG {C, V} ). Такие инструменты, как Bashdb , могут помочь в использовании некоторых из более продвинутых функций отладки Bash.

10
27.01.2020, 19:54

Теги

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