我试图让一个不那么复杂的if-else在我的 FreeBSD框上工作但是我在第二部分情况下遇到错误。
基本上,这就是我想要做的事情if not file-exists or (file-exists and string exists in file) then
do this
else
do something else
这是我使用
的实际代码if [ ! -f /boot/loader.conf ] || [[ -f /boot/loader.conf ] && ! grep -Fqx "zfs_l
oad" /boot/loader.conf ]; then
echo "found"
else
echo "not found"
fi
它给我一个关于" [["。我尝试添加/删除括号无济于事。
我也在网上搜索了类似的例子,但我所看到的非常简单(即如果var = value则这样做)
我可以将条件分成2" ifs"但我认为它可以在1中完成,我想知道"提前"如果 - 其他也在伯恩。 :)
非常感谢任何帮助。
谢谢:)
答案 0 :(得分:1)
使用{ ... }
进行分组,没有子shell的开销和副作用(由( ... )
创建)。 [[ ]]
是一种不同的语法,仅在ksh派生词中可用,例如bash,它将[ ... ]
替换为容易出错的替代词;它在基准POSIX shell中不可用。
[ ! -f /boot/loader.conf ] || \
{ [ -f /boot/loader.conf ] && ! grep -Fqx "zfs_load" /boot/loader.conf; }