해결하기 매우 어려운 버그가 있습니다. 일어나야 할 일은 두 가지 조건을 테스트한 다음 무언가를 수행하는 것입니다. 대상은 비어 있는지 또는 일치하는지 여부입니다.
if [ -z "$_BRANCH" ] || [[ "$_BRANCH" = "master" ]]; then
_FOE_BRANCH="master"
[ -s "$module_dir/branch.gitploy" ] && _FOE_BRANCH=$(cat "$module_dir/branch.gitploy")
[ "$_FOE_BRANCH" -ne "master"] && _BRANCH=$_FOE_BRANCH
fi
어떤 이유로 인해 이 오류가 계속 발생합니다.
[: missing `]'
이 라인의 경우
if [ -z "$_BRANCH" ] || [[ "$_BRANCH" = "master" ]]; then
하지만 읽고 지우려고 하면 계속 반복됩니다. 나는 모든 것이 괜찮을 것이라고 기대한다https://stackoverflow.com/a/16138899/746758.
유사한 게시물을 본 적이 있고 여러 번 오류를 수정하지 않고 게시한 것이 아니기 때문에 이를 방지하고 싶습니다.이것은 중복이 아닙니다도착하다 Bash if 문[: `]' 오류가 누락되었습니다.또는if 조건의 괄호: 공백 없이 구문 오류가 발생하는 이유는 무엇입니까? , 제가 아는 한 답변에는 공간 문제가 없습니다. 나는 사전에 일치하는 항목이 있다고 생각합니다. 이것은 해결책이 필요한 다른 문제라고 생각합니다.
답변1
첫 번째 줄에 오류가 있는 것이 확실합니까? 마지막 테스트에 공백이 없습니다. 변화
[ "$_FOE_BRANCH" -ne "master"] && _BRANCH=$_FOE_BRANCH
도착하다
[ "$_FOE_BRANCH" -ne "master" ] && _BRANCH=$_FOE_BRANCH
또한, 당신이 얘기하고 있기 때문에쉿, 반드시 bash일 필요는 없습니다. [
대신 계속 사용하도록 첫 번째 줄을 변경할 수 있습니다 [[
. 일부 쉘에서는 작동하지 않을 수 있습니다.
if [ -z "$_BRANCH" ] || [ "$_BRANCH" = "master" ]; then