我想检查fish(友好的交互式shell)中变量是否为空的条件。
if test "$argv" = null
# do something...
else
# do something else...
答案1
我具体不知道“鱼”,但我知道标准的“测试”。
尝试:
test "$argv" = ""
或者
test "x$argv" = x
或者
test -z "$argv"
这假设您想要测试它是否未设置或为空。如果您只需要这两种情况之一,则需要 shell 特定的变量扩展修饰符。
请注意,第二个示例经常出现在尝试高可移植性的代码中。它避免了空参数,因为它们有时似乎会丢失。
第三个示例是test
测试空字符串的选项。
答案2
我对鱼也不太了解,但和其他 shell 一样,它似乎也有未定义变量和空变量的区别。
从常见问题解答来看,您似乎可以测试变量是否已定义with set -q var
, 和 usestring length -q
来查看它是否包含非空字符串。
例如,要查看脚本的第一个参数是否已定义、为空还是非空:
#!/usr/bin/fish
if not set -q argv[1]
echo 'not defined'
else if not string length -q -- "$argv[1]"
echo 'defined but empty'
else
echo 'defined and non-empty'
end
如果您不关心未定义和已定义但为空的变量之间的区别,只需跳过第一个测试,未定义的值在双引号中时将扩展为空字符串。