Динамически генерировать команду в bash - PullRequest
0 голосов
/ 01 февраля 2020

Я хочу динамически генерировать довольно длинную команду bash в зависимости от параметров командной строки. Вот что я попробовал:

CONFIG_PATH=""

#Reading CONFIG_PATH from getopts if supplied

SOME_OPT=""
if [ ! -z "$CONFIG_PATH" ]; then
    SOME_OPT="-v -s -cp $CONFIG_PATH"
fi

some_bash_command $SOME_OPT

Суть в том, что я хочу передать 0 аргументов в some_bash_command, если в скрипт не было передано ни одного аргумента. В случае, если были какие-то аргументы, я хочу их передать.

Он работает нормально, но проблема в том, что этот подход выглядит довольно неестественно для меня.

Что было бы еще лучше практический способ сделать это?

1 Ответ

3 голосов
/ 01 февраля 2020

Ваш подход более или менее стандартный; единственное существенное улучшение, которое я бы порекомендовал, - это использование array , чтобы вы могли правильно процитировать аргументы. (В противном случае ваша команда может ужасно плохо себя вести, если какой-либо из аргументов содержит специальные символы, такие как пробелы или звездочки.)

Итак:

SOME_OPT=()
if [ ! -z "$CONFIG_PATH" ]; then
    SOME_OPT=(-v -s -cp "$CONFIG_PATH")
fi

some_bash_command "${SOME_OPT[@]}"
...