Я немного экспериментирую со сценарием оболочки, который должен запускать команды git для нескольких репозиториев на одном уровне. Эта структура проекта может быть плохой идеей, но это уже другая история.
Все работает нормально, пока я не столкнулся с этой проблемой:
DETAIL="test test" && command="commit -m '${DETAIL}'" && echo $(git ${command})
# -> error: pathspec 'test'' did not match any file(s) known to git.
Я также пробовал другие возможности, такие как
DETAIL="test test" && command="commit -m ${DETAIL}" && echo $(git ${command})
DETAIL="test test" && command="commit -m $DETAIL" && echo $(git ${command})
Все дают одинаковый результат (см. выше). Я также просмотрел эти docs о расширении строки, но у меня нет проблемы, что переменные/строки могут быть нулевыми или неопределенными. Последний echo
не проблема, вы также можете сохранить результат $(git status)
в переменной и повторить этот (мой способ в скрипте).
Я знаю, что есть подобные questions, но похожего сценария пока не нашел, так как имею дело как раз с простыми и ненулевыми строками, но с (тоже?) много цитат.
Интересный вариант:
DETAIL="test test" && command="commit -m '${DETAIL}'" && echo $("git ${command}")
# -> git commit -m 'test test': command not found # WHAT?
Тоже интересно, только:
command="commit -m 'test'" && echo $(git ${command})
работает отлично.