Выполнение пользовательской функции в вызове find -exec И выбор версии этой функции на основе аргументов

Этот вопрос, кажется, путает аргументы оболочки с командой read. Они разные:

  1. Оболочка:

    set -- foo bar baz buzz zap bang ; echo $2
    

    Выводится только второе слово:

    bar
    
  2. Команда readс двумя именами переменных:

    echo foo bar baz buzz zap bang | (read x y ; echo $y )
    

    Выводит все, включая второе слово и дальше:

    bar baz buzz zap bang
    
1
14.10.2020, 06:56
1 ответ

Вы можете использовать имя функции в качестве аргумента:

if [[ $force == "y" ]] ; then
  USE=cmd_force
else
  echo "Call this with the -f option in case of: error: Your local changes to... files would be overwritten by merge"
  USE=cmd_nice
fi

export -f $USE
find. -mindepth 2 -maxdepth 2 -name PKGBUILD -execdir bash -c $USE' {}' \;
1
18.03.2021, 22:57

Теги

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