時には、空の文字列魚に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
したがって、 '['は実際にはコマンド( '/ OSXでは'/bin/[')であり、**は構文が異なる** bashの組み込み関数です。 Go figure! –
このコメントはちょうど私の一日を作った! [コマンドは本当に強力なツールです。 – yagooar
個人的には、実際には、すべてのスクリプトで '['の代わりに 'test'を使用し始めました。したがって、それは外部コマンドであり、言語の一部ではないことは明らかです。 ( 'test'と' ['は全く同じツールです)もちろん、' test'もBashの組み込み関数だと思います。 –