标签: if-statement

具有多个条件的Bash if语句会引发错误

我正在尝试编写一个将检查两个错误标志的脚本,并且如果一个标志(或两者)被更改,它将回显 - 发生错误.我的剧本:

my_error_flag=0
my_error_flag_o=0
do something.....
if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" &&     "$my_error_flag_o"="2" ]]; then
    echo "$my_error_flag"
else
    echo "no flag"
fi
Run Code Online (Sandbox Code Playgroud)

基本上,它应该是,以下内容:

if ((a=1 or b=2) or (a=1 and b=2))
  then
     display error
else
     no error
fi
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

 line 26: conditional binary operator expected
 line 26: syntax error near `]'
 line 26: `if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" && "$my_error_flag_o"="2" ]]; then'
Run Code Online (Sandbox Code Playgroud)

我的括号搞砸了吗?

bash flags if-statement

147
推荐指数
3
解决办法
50万
查看次数

Bash - "if"语句的"和"运算符

我正在尝试创建一个简单的bash脚本来检查网站是否已关闭,并且由于某种原因"and"运算符不起作用:

#!/usr/bin/env bash

WEBSITE=domain.com
SUBJECT="$WEBSITE DOWN!"
EMAILID="an@email.com"
STATUS=$(curl -sI $WEBSITE | awk '/HTTP\/1.1/ { print $2 }')
STRING=$(curl -s $WEBSITE | grep -o "string_to_search")
VALUE="string_to_search"

if [ $STATUS -ne 200 ] && [[ "$STRING" != "$VALUE" ]]; then
        echo "Website: $WEBSITE is down, status code: '$STATUS' - $(date)" | mail -s "$SUBJECT" $EMAILID
fi
Run Code Online (Sandbox Code Playgroud)

"-a"运算符也不起作用:

if [ $STATUS -ne 200 ] -a [[ "$STRING" != "$VALUE" ]]
Run Code Online (Sandbox Code Playgroud)

你能告诉我什么时候使用:

  • 单方括号和双方括号
  • 插入语

bash if-statement

142
推荐指数
5
解决办法
32万
查看次数

Bash中单方括号和双方括号之间的区别

我正在阅读bash示例,if但有些示例是用单个方括号编写的:

if [ -f $param ]
then
  #...
fi
Run Code Online (Sandbox Code Playgroud)

其他双方括号:

if [[ $? -ne 0 ]]
then
    start looking for errors in yourlog
fi
Run Code Online (Sandbox Code Playgroud)

有什么不同?

bash if-statement

142
推荐指数
5
解决办法
5万
查看次数

否定bash脚本中的条件

我是bash的新手,我一直试图否定以下命令:

wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -eq 0 ]]; then
        echo "Sorry you are Offline"
        exit 1
Run Code Online (Sandbox Code Playgroud)

如果我连接到互联网,这个if条件返回true.我希望它以相反的方式发生,但放在!任何地方似乎都不起作用.

linux bash if-statement negate

141
推荐指数
5
解决办法
15万
查看次数

if-else块中'if(0)'块的目的是什么?

我的问题是关于我在主题中提到的那条线,我可以在生产代码中的许多地方看到.

整体代码如下所示:

if (0) {
    // Empty braces
} else if (some_fn_call()) {
    // actual code
} else if (some_other_fn_call()) {
    // another actual code
    ...
} else {
    // default case
}
Run Code Online (Sandbox Code Playgroud)

其他分支与我的问题无关.我想知道放在if (0)这里的含义是什么.大括号是空的,所以我认为它不应该评论一些代码块.它会强制编译器进行一些优化还是意图不同?

我试图在SO和互联网上搜索这个明确的案例,但没有成功.关于JavaScript有类似的问题,但不是C.还有另一个问题,当在`if`条件中分配零时会发生什么?,但它讨论了对变量的零赋值,而不是'if(0)'用法本身.

c if-statement

140
推荐指数
11
解决办法
1万
查看次数

如何防止ifelse()将Date对象转换为数字对象

我正在使用该函数ifelse()来操作日期向量.我期望结果是类Date,并且很惊讶地得到了一个numeric向量.这是一个例子:

dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'))
dates <- ifelse(dates == '2011-01-01', dates - 1, dates)
str(dates)
Run Code Online (Sandbox Code Playgroud)

这尤其令人惊讶,因为在整个向量上执行操作会返回一个Date对象.

dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04','2011-01-05'))
dates <- dates - 1
str(dates)
Run Code Online (Sandbox Code Playgroud)

我应该使用其他功能来操作Date矢量吗?如果是这样,有什么功能?如果没有,我如何强制ifelse返回与输入相同类型的向量?

帮助页面ifelse表明这是一个功能,而不是一个错误,但我仍然在努力寻找一个解释我发现的令人惊讶的行为.

datetime if-statement r

136
推荐指数
6
解决办法
3万
查看次数

测试字符串是否包含数组中的任何字符串

如何测试字符串以查看它是否包含数组中的任何字符串?

而不是使用

if (string.contains(item1) || string.contains(item2) || string.contains(item3))
Run Code Online (Sandbox Code Playgroud)

java string if-statement coding-style

135
推荐指数
5
解决办法
22万
查看次数

一次性写“ if”的最优雅方式

由于C ++ 17可以编写一个if块,因此将完全执行一次,如下所示:

#include <iostream>
int main() {
    for (unsigned i = 0; i < 10; ++i) {

        if (static bool do_once = true; do_once) { // Enter only once
            std::cout << "hello one-shot" << std::endl;
            // Possibly much more code
            do_once = false;
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可能对此有过多的思考,还有其他方法可以解决此问题,但是仍然-是否可以以这种方式编写此文本,因此do_once = false最后不需要?

if (DO_ONCE) {
    // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我在考虑一个辅助函数,do_once()其中包含static bool do_once,但是如果我想在不同的地方使用相同的函数呢?可能这是时间和地点#define吗?我希望不是。

c++ if-statement c++17

134
推荐指数
8
解决办法
2万
查看次数

if语句中的赋值

我有一个类Animal及其子类Dog.我经常发现自己编写以下代码:

if (animal is Dog)
{
    Dog dog = animal as Dog;    
    dog.Name;    
    ... 
}
Run Code Online (Sandbox Code Playgroud)

对于变量Animal animal;.

是否有一些语法允许我写如下:

if (Dog dog = animal as Dog)
{    
    dog.Name;    
    ... 
}
Run Code Online (Sandbox Code Playgroud)

c# casting if-statement

133
推荐指数
6
解决办法
6万
查看次数

在Swift中的if语句中使用多个let-as

我正在从字典中解开两个值,在使用它们之前我必须将它们转换为正确的类型.这就是我想出的:

var latitude : AnyObject! = imageDictionary["latitude"]
var longitude : AnyObject! = imageDictionary["longitude"]

if let latitudeDouble = latitude as? Double  {
   if let longitudeDouble = longitude as? Double {
       // do stuff here
   }
}
Run Code Online (Sandbox Code Playgroud)

但是如果让查询合二为一,我想打包两个.所以它会是这样的:

if let latitudeDouble = latitude as? Double, longitudeDouble = longitude as? Double {
    // do stuff here
}
Run Code Online (Sandbox Code Playgroud)

那句法不起作用,所以我想知道是否有一种漂亮的方法可以做到这一点.

if-statement optional swift

132
推荐指数
3
解决办法
6万
查看次数

标签 统计

if-statement ×10

bash ×4

c ×1

c# ×1

c++ ×1

c++17 ×1

casting ×1

coding-style ×1

datetime ×1

flags ×1

java ×1

linux ×1

negate ×1

optional ×1

r ×1

string ×1

swift ×1