gpt4 book ai didi

linux - 在这里测试逻辑和条件的最短方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:05 26 4
gpt4 key购买 nike

我有检查文件模式是否存在的函数

trackid=$1
tg=$2
srch=delta-revnue-$trackid
srch2=delta-full-$trackid
testpath() {
var=1
if test -n "$(find $tg -maxdepth 1 -iname "$srch*" -print -quit)"
then

export var=0

else


export var=1

fi

return $var

}

testpath $1 $2
echo "exit code is $?"

我想做这样的条件

 If testpath val1 path =!0  ||  testpath val2 path =1
echo "some files are missing"
else
stuff here
fi

我知道有 N 种方法可以做这个简单的事情。但是有一种非常简短而甜美的说法,听起来像(条件||条件)之类的东西。这个在shell里怎么说最简洁

答案应该是合乎逻辑的 && 而不是 ||。 ||将仅测试 1 个条件,如果为真,则不会查看另一个条件。

testpath var path && testpath var1 path 

最佳答案

你要做的就是:

if testpath val1 path && testpath val2 path
then
stuff here
else
echo "some files are missing"
fi

如果你真的想改变 if/else 中内容的顺序,你可以这样做:

testpath val1 path && testpath val2 path

if [ $? != 0 ]
then
echo "some files are missing"
else
stuff here
fi

或者不太清楚(使用 DeMorgans Theorem ):

if ! testpath val1 path || ! testpath val2 path
then
echo "some files are missing"
else
stuff here
fi

您的 testpath 函数也可以大大缩短。你真正需要的是这个(我已经根据你想在这里使用函数的方式使用了函数参数):

testpath() {
test -n "$(find "$2" -maxdepth 1 -iname "*$1*" -print -quit)"
}

关于linux - 在这里测试逻辑和条件的最短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com