때때로 당신이 물고기 falsy 있습니다 빈 문자열 또는 정의되지 않은 변수, 확인하고 싶습니다.
set hello "world"
set empty_string ""
set undefined_var # Expands to empty string
if [ $hello ]
echo "not empty" # <==
else
echo "empty"
end
if [ $empty_string ]
echo "not empty"
else
echo "empty" # <==
end
if [ $undefined_var ]
echo "not empty"
else
echo "empty" # <==
end
또한 test
대신 [
사용할 수 있습니다.
실용적인 예는 git 브랜치에 있는지 확인하는 것입니다.
function git_branch
echo (command git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||')
end
set --local branch_name (git_branch)
if [ $branch_name ]
echo "$branch_name branch checked out"
else
echo "not in a git repo"
end
따라서 [''은 실제로는 명령입니다 (OS X의 경우/bin/[')이고 ** ** 다른 구문이있는 배시 내장형 인 경우). 그림을 이동! –
이 댓글은 단지 내 하루를 만들었습니다! [명령은 정말 강력한 도구입니다. – yagooar
필자는 개인적으로 모든 스크립트에서'['대신 'test'를 사용하기 시작 했으므로 언어의 일부가 아닌 외부 명령이라는 것이 분명합니다. ('test'와'['는 똑같은 툴입니다.) 물론'test '도 Bash의 내장 함수라고 생각합니다. –