Ответ 1
Вы всегда можете использовать границы слов вокруг имени типа \<
и \>
, но вместо этого Git выполните работу для вас:
if [ `git branch --list $branch_name `]
then
echo "Branch name $branch_name already exists."
fi
Мне нужно создать ветвь Git, используя оболочку script, но поскольку ветка может существовать, мне нужно знать об этом. В настоящее время я использую:
if [ `git branch | grep $branch_name` ]
then
echo "Branch named $branch_name already exists"
else
echo "Branch named $branch_name does not exist"
fi
Но проблема заключается в том, что команда grep
находит имя ветки без соответствия точному имени, то есть если я grep name
, то ответвление с именем branch-name
будет соответствовать.
Так есть лучший способ сделать это?
Спасибо!
Вы всегда можете использовать границы слов вокруг имени типа \<
и \>
, но вместо этого Git выполните работу для вас:
if [ `git branch --list $branch_name `]
then
echo "Branch name $branch_name already exists."
fi
Мне нравится решение Heath, но если вы все еще хотите подключиться к grep, вы можете использовать привязки regex, похожие на следующие, чтобы исключить совпадение подстроки:
if [ `git branch | egrep "^[[:space:]]+${branchname}$"` ]
then
echo "Branch exists"
fi
Обратите внимание, что вам нужно использовать класс символов space
, потому что вывод команды имеет отступ.