Вопросы с тегом «function»

Вопросы по использованию функций в контексте Unix и Linux (в основном, но не только сценарии оболочки). Вопросы по программированию на Python, Perl, Ruby и т. Д. Следует задавать в Stack Overflow.

360
В Bash, когда для псевдонима, когда для сценария, и когда написать функцию?

У меня ушло почти 10 лет использования Linux, чтобы задать этот вопрос. Все это было методом проб и ошибок и случайным ночным интернет-серфингом. Но людям не нужно 10 лет для этого. Если бы я только начинал с Linux, я бы хотел знать: когда использовать псевдоним, когда писать сценарий и когда...

243
Как передать аргумент командной строки в сценарий оболочки?

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

98
Разница между «функцией foo () {}» и «foo () {}»

Я могу определить bashфункции, используя или опуская functionключевое слово. Есть ли разница? #!/bin/bash function foo() { echo "foo" } bar() { echo "bar" } foo bar Оба вызова функций fooи barуспешно, и я не вижу никакой разницы. Поэтому мне интересно, если это просто для улучшения читабельности,...

81
Могу ли я «экспортировать» функции в bash?

source some_file some_file: doit () { echo doit $1 } export TEST=true Если я использую исходный код some_file, функция «doit» и переменная TEST доступны в командной строке. Но запускаем этот скрипт: script.sh: #/bin/sh echo $TEST doit test2 Вернет значение TEST, но сгенерирует ошибку о неизвестной...

59
Зачем писать весь скрипт bash в функциях?

На работе я часто пишу сценарии bash. Мой руководитель предложил разбить весь сценарий на функции, как показано в следующем примере: #!/bin/bash # Configure variables declare_variables() { noun=geese count=three } # Announce something i_am_foo() { echo "I am foo" sleep 0.5 echo "hear me roar!" } #...

56
Обновить псевдонимы и функции после определения новых псевдонимов и функций?

Когда я определяю новый псевдоним в .bash_aliasesфайле или новую функцию в .bashrcфайле, существует ли какая-либо команда обновления, чтобы можно было немедленно использовать новые псевдонимы или функции без закрытия терминала (в моем случае терминал xfce4 с несколькими открытыми вкладками...

40
Каковы минимальные и максимальные значения кодов выхода в Linux?

Каковы минимальные и максимальные значения следующих кодов выхода в Linux: Код завершения, возвращаемый двоичным исполняемым файлом (например, программой на Си). Код выхода, возвращаемый скриптом bash (при вызове exit). Код выхода, возвращаемый функцией (при вызове return). Я думаю, что это между...

33
Выполнение простой математики в командной строке с использованием функций bash: $ 1, деленное на $ 2 (возможно, с использованием bc)

Иногда мне нужно разделить одно число на другое. Было бы здорово, если бы я мог просто определить функцию bash для этого. До сих пор я вынужден использовать такие выражения, как echo 'scale=25;65320/670' | bc но было бы здорово, если бы я мог определить функцию .bashrc, которая выглядела бы как...

28
Функции выполняются как подпроцессы в Bash?

В Advanced Bash-Scripting Guide , в примере 27-4 , 7-я строка снизу, я прочитал это: Функция выполняется как подпроцесс. Я сделал тест в Bash, и кажется, что приведенное выше утверждение неверно. Поиски на этом сайте, Bash Man, и моя поисковая система не проливают свет. У вас есть ответ и вы хотели...

28
Область действия локальных переменных в функциях оболочки

После прочтения 24.2. Локальные переменные , я думал, что объявление переменной varс ключевым словом localозначало, что varзначение было доступно только внутри блока кода, ограниченного фигурными скобками функции. Однако после запуска следующего примера, я обнаружил, что varтакже может быть...

25
Почему при написании оболочки для cd мне нужно использовать cd «$ @» вместо cd «$ 1»?

В другом месте я видел функцию CD, как показано ниже: cd() { builtin cd "$@" } почему рекомендуется использовать $@вместо $1? Я создал тестовый каталог "r st" и вызвал скрипт, содержащий эту функцию, и он работал в любом случае $ . cdtest.sh "r st" но $ . cdtest.sh r stне удалось, использовал ли я...

25
Выполнение пользовательской функции в вызове find -exec

Я использую Solaris 10, и я протестировал следующее с помощью ksh (88), bash (3.00) и zsh (4.2.1). Следующий код не дает никакого результата: function foo { echo "Hello World" } find somedir -exec foo \; Поиск действительно соответствует нескольким файлам (как показано заменой -exec ...на -print),...

24
что такое zsh-эквивалент экспорта bash -f

Итак, я начал использовать zsh. Мне нравится все в порядке. Это выглядит очень круто и гладко, и тот факт, что текущий рабочий каталог и фактическая командная строка находятся на разных строках, это хорошо, но в то же время я замечаю, что это zshможет быть немного медленнее, чем bash, особенно при...

24
Как добавить функцию в .bash_profile / .profile / bashrc в оболочке?

У меня есть функция, которая преобразовывает время эпохи в дату. Вот определение date1(){ date -d @$1 } Я хотел бы иметь возможность написать: $ date1 xxxyyy Где xxxyyy - это параметр, который я передаю в свою функцию, чтобы получить соответствующую дату. Я понимаю , что я должен добавить его в...

22
Выполнение функции Bash Script с Sudo

У меня есть сценарий, который выполняет множество разных задач, большинство из которых не требует каких-либо особых привилегий. Тем не менее, один конкретный раздел, который я содержал в функции, нуждается в привилегиях суперпользователя. Я не хочу требовать, чтобы весь сценарий выполнялся от имени...

21
Существует ли в Bash концепция обратного вызова программирования?

Несколько раз, читая о программировании, я сталкивался с концепцией «обратного вызова». Как ни странно, я так и не нашел объяснения, которое я мог бы назвать «дидактическим» или «понятным» для этого термина «функция обратного вызова» (почти любое прочитанное мной объяснение показалось мне...

19
Как получить имя текущего буфера в Emacs?

Одна из основных функций, которые я пропускаю в Vim, заключается в том, что он всегда сохраняет имя файла текущего файла в %буфере ( дополнительная информация ). Это позволяет легко запускать команды, такие как: ;; compile current file :! gcc % ;; source current file (useful when I'm editing .vimrc...

18
Как установить псевдоним для каждого каталога?

Предположим, у вас есть псевдоним go, но вы хотите, чтобы он делал разные вещи в разных каталогах? В одном каталоге он должен работать cmd1, а в другом -cmd2 Кстати, у меня уже есть псевдонимы для переключения на вышеуказанные каталоги, так возможно ли добавить goпсевдоним для fooпсевдонима? alias...