如何在鱼中连接条件



我试图在fish中使用两个条件使用if块。这个想法很简单:我想检查图像文件是否太宽,太高,或两者兼而有之。所以我写了下面的脚本:

#!/bin/fish
set bla (identify $argv[1])
set blabla (string split ' ' $bla)
set siiz (string split x $blabla[3])
set xsiz $siiz[1]
set ysiz $siiz[2]

if test (test $xsiz -gt 1600) -a (test $ysiz -gt 900)
echo "both $xsiz $ysiz"
else if test $ysiz -gt 900
echo "tall"
else if test $xsiz -gt 1600
echo "wide"
end

并且我已经执行了检查,以查看变量xsiz和ysiz是否有权限值。但是不管我传递什么给脚本,它总是返回& both"(即使使用20 × 20像素的图像)如果我试图传递没有括号或内部test命令的test命令,fish将抱怨无法识别命令。文档中没有这样的组合条件的例子。

你把事情弄得太复杂了。需要注意的是,除了set命令的特殊情况外,命令替换不能捕获命令的退出状态。你的版本相当于:

if test (false) -a (true)
echo yes
end

总是回响着&;yes&;(为什么false不导致测试评估为false是语言的一个怪癖,应该修复,IMHO)。

只做一个测试:

if test $xsiz -gt 1600 -a $ysiz -gt 900

最新更新