执行命令并在if语句中进行比较

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了执行命令并在if语句中进行比较相关的知识,希望对你有一定的参考价值。

我正在使用bash脚本来检查两个特定目录是否包含一些特定数量的文件。假设20.是否可以在if语句中的一行中检查它?

#!/bin/bash

if [ [ls /path/to/dir1 | wc -l ] != 20 ||  [ ls /path/to/dir2 | wc -l ] != 50 ]; then
  echo "do this!"
elif
  echo "do that!"
fi
答案

语法不正确:

if [[ $(ls /path/to/dir1 | wc -l)  != 20 || $(ls /path/to/dir2 | wc -l) != 50 ]] 
then
    echo "do this!"
else
    echo "do that!"
fi

(为了便于阅读,我移动了then的位置)

使用两个方括号[[,您可以使用||代替-o,而不是传统语言。严格来说[[进行模式匹配,所以虽然上面的代码可行,但算术测试应该真正使用((

if (( $(ls /path/to/dir1 | wc -l)  != 20 || $(ls /path/to/dir2 | wc -l) != 50 ))
then
    echo "do this!"
else
    echo "do that!"
fi

$( )运行子shell并捕获输出。

另一答案

正确的if语法:

if [ $(ls /path/to/dir1 | wc -l) -ne 20 -o $(ls /path/to/dir2 | wc -l) -ne 50 ]

但在你的例子中,你不应该只使用elif。使用else,或指定elif的条件,exmpl:

if [ $(ls /path/to/dir1 | wc -l) -ne 20 -o $(ls /path/to/dir2 | wc -l) -ne 50 ]
then
    echo "Do smth"
elif [ $(ls /path/to/dir3 | wc -l) -ne 100 ]
then
    echo "Do anything else"
fi

以上是关于执行命令并在if语句中进行比较的主要内容,如果未能解决你的问题,请参考以下文章

如何比较两个for循环的值并在django模板中使用if语句?

bash循环语句

PHP条件控制语句之“if语句”

如何比较 IF 语句中的两个变量?

shell编程之case分支语句

Oracle SQL If语句使用select进行比较[重复]