Почему использование переменной bash в find не удается? - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть команда find в bash-скрипте, которая работает, но когда я пытаюсь разбить ее на переменные, которые добавляются вместе, она больше не работает правильно.

Я на самом деле не ищулучший способ сделать это, я хотел бы понять, что Bash делает в этом случае, поскольку я очень озадачен этим.

# Works, prints ./config
find . -type f -name 'config' ! -path './.git*'

echo
pathVar="! -path './.git*'"
# Doesn't correctly ignore './.git/config'
find . -type f -name 'config' $pathVar

echo
# Doesn't work 'find: ! -path './.git*': unknown primary or operator'
find . -type f -name 'config' "$pathVar"

1 Ответ

1 голос
/ 15 апреля 2019

Как указано в комментариях,

Вариант 1:

cmd="find . -type f -name 'config'"
if [[<condition to run long command>]]; then
    cmd="$cmd ! -path './.git*'"
fi
eval $cmd

Вариант 2:

if [[<condition to run long command>]]; then
    find . -type f -name 'config' ! -path './.git*'
    # ...
else
    find . -type f -name 'config'
    # ...
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...