如何比较Fish中的两个字符串(如其他语言中的"abc" == "def"
)?
到目前为止,我使用了contains
的组合(如果contains "" $a
是空字符串,0
仅返回$a
,尽管没有似乎在所有情况下对我都有效)和switch
(case "what_i_want_to_match"
和case '*'
)。但是,这两种方法都不是特别正确的。
答案 0 :(得分:41)
if [ "abc" != "def" ]
echo "not equal"
end
not equal
if [ "abc" = "def" ]
echo "equal"
end
if [ "abc" = "abc" ]
echo "equal"
end
equal
或一个班轮:
if [ "abc" = "abc" ]; echo "equal"; end
equal
答案 1 :(得分:10)
有时您想检查空字符串或未定义变量,这些都是鱼类中的虚假信息。
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