Linux Shell 脚本:如何在 if 语句中调用方法并同时计算返回值

Linux Shell 脚本:如何在 if 语句中调用方法并同时计算返回值

关于Linux Shell脚本有以下内容:

verifyIfFileExists(){
   ...
   returns 0 # if the file exists
   ...
   returns 1 # if the does not exist 
}

...

something(){

   verifyIfFileExists
   resultVerification=$?

   if [[ $resultVerification -eq 0 ]]; then
      ...   
   else
      ...
   fi
   ...
}

上面显示的代码按预期工作。我想知道是否可能以及如何在语句中调用方法和求值if- 它以避免resultVerification=$?声明 - 类似:

something(){

   verifyIfFileExists

   if [[ $(verifyIfFileExists) -eq 0 ]]; then
      ...   
   else
      ...
   fi

答案1

如果命令

成功,如果command以 0 状态退出;就你而言,

if verifyIfFileExists; then
    ...
else
    ...
fi

[[[本身是命令,根据作为参数给出的表达式的计算结果返回 0 或 1。所以

if [[ ...

是泛型的一个实例

如果命令
如上所示。

如果您想稍后使用退出状态,则将退出状态存储在不同的变量中可能会很有用;例如

... run a command
result=$?
printf "Command foo exited with result %s.\n" "$result"
if [[ "$result" -eq 0 ]]; then
    ...
fi

如果你不需要那个,那么

command
if [[ "$?" -eq 0 ]]; then

可以重写为

if command; then

我发现它更容易阅读。如果您的函数具有相应的名称,则尤其如此,例如

if fileExists; then

也可以看看shellcheck的SC2181其中列出了更多陷阱。

答案2

只需使用:

  if verifyIfFileExists ; then
     # checking for return code 0

或者

  if ! verifyIfFileExists ; then
         # checking for return code 1

相关内容