Пустая функция в BASH

Я использую инструмент FPM для создания пакета .deb. Этот инструмент создает до/после удаления пакета из поддерживаемых файлов.

К сожалению, bash script, сгенерированный FPM, содержит такую ​​функцию

dummy() {
}

И этот script выход с ошибкой:

Синтаксическая ошибка: "}" неожиданно

Предоставляет ли bash пустые функции? Какая версия bash/linux имеет это ограничение?

Ответы

Ответ 1

Вы можете использовать :, что эквивалентно true и в основном используется как ничего не делают оператор...

dummy(){
     : 
  }

Ответ 2

Пустая функция bash может быть незаконной. функция содержит только комментарии, которые также будут считаться пустыми.

a ":" (нулевая команда) может быть помещена в функцию, если вы хотите "НИЧЕГО"

см. http://tldp.org/LDP/abs/html/functions.html

Ответ 3

Один лайнер

dummy(){ :; }


: пустая команда

; нужен в формате одной строки

Ответ 4

Я рекомендую это:

dummy(){ unused(){ :;} }


Если вы используете команду : null, она будет напечатана с помощью опции xtrace:

(
    set -o xtrace
    dummy(){ :; }
    dummy "null command"
)

echo ------

(
    set -o xtrace
    dummy(){ unused(){ :;} }
    dummy "unused function"
)

выход:

+ dummy 'null command'
+ :
------
+ dummy 'unused function'

Для отладки я использую обертку так:

main() {(
    pwd # doing something in subshell
)}

print_and_run() {
    clear
    (
        eval "$1() { unused() { :; } }"
        set -o xtrace
        "[email protected]"        
    )
    time "[email protected]"
}

print_and_run main aaa "bb bb" ccc "ddd"
# output:
# + main aaa 'bb bb' ccc ddd
# ..