小编Sim*_*_me的帖子

具有多个条件的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万
查看次数

获取所有枚举值到列表

我正在尝试并且失败,检索所有枚举值并使用Java 8和流将它们放入列表中.到目前为止,我已尝试过以下两种方法,但两者都没有返回值.

我究竟做错了什么?

码:

public class Main {
public static void main(String[] args) {
    List<String> fruits1 = Stream.of(FruitsEnum.values())
                                 .map(FruitsEnum::name)
                                 .collect(Collectors.toList());

    List<String> fruits2 = Stream.of(FruitsEnum.values().toString())
                                 .collect(Collectors.toList());

    // attempt 1
    System.out.println(fruits1);
    // attempt 2
    System.out.println(fruits2);
}

enum FruitsEnum {
    APPLE("APPL"),
    BANANA("BNN");

    private String fruit;

    FruitsEnum(String fruit) {this.fruit = fruit;}

    String getValue() { return fruit; }

   }
}
Run Code Online (Sandbox Code Playgroud)

输出:

[APPLE, BANANA]
[[LMain$FruitsEnum;@41629346]
Run Code Online (Sandbox Code Playgroud)

期望:

["AAPL", "BNN"]
Run Code Online (Sandbox Code Playgroud)

java enums java-8 java-stream

10
推荐指数
2
解决办法
764
查看次数

将列表从文本文件加载到 Bash 脚本

我有一个.txt文件,其中包含

abc.com
google.com
....
....
yahoo.com
Run Code Online (Sandbox Code Playgroud)

我有兴趣将其作为列表加载到 bash 脚本中(即Domain_List=( "abc.com" "google.com" .... "yahoo.com"))。可以做吗?

附加信息,一旦获得列表,它将在for循环和if语句中使用。

 for i in "${Domain_list[@]}
 do
     if grep -q "${Domain_list[counter]}" domains.log
   ....
   ....
     fi
 ....
     let counter=counter+1
 done
Run Code Online (Sandbox Code Playgroud)

谢谢你,

更新:我已将格式更改为 Domain_list=( "google.com .... "yahoo.com" ),并且 usingsource Doamin.txt允许我在 bash 脚本中用作Domain_list列表。

#!/bin/bash

counter=0
source domain.txt
for i in "${domain_list[@]}"
do
   echo "${domain_list[counter]}"
   let counter=counter+1
done
echo "$counter"
Run Code Online (Sandbox Code Playgroud)

bash list text-files

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

DefaultDict的替代方案

不幸的是,对我来说,我需要使脚本向后兼容w/Python 2.4,并且defaultdict在2.4版本中不存在.

什么可以替代呢?

给定键的数据结构是以下列表:

[{'red': (12, 1, 12), 'white': (30, 2, 60), 'blue': (8, 1, 4), 'orange': (9, 4, 8), 'black': (10, 12, 4)}]
Run Code Online (Sandbox Code Playgroud)

编辑:添加使用信息.首先,我用以下内容构建默认dict:

defDict[key1].append(... ...)
Run Code Online (Sandbox Code Playgroud)

然后它传递给密钥的几种方法:val(列表)查找和密钥删除.

特别是删除:

        if len(defDict[key1][0]) == 0:
            del defDict[key1]
Run Code Online (Sandbox Code Playgroud)

编辑:NoneType上的错误

        print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        print defDict[key]
        print "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
        if len(defDict[key][0]) == 0:
            #del defDict[key]
Run Code Online (Sandbox Code Playgroud)

错误:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
None
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
if len(defDict[key][0]) == 0:
TypeError: 'NoneType' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)

我认为错误来自key:

        print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        print defDict[key]
        print "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
Run Code Online (Sandbox Code Playgroud)

输出:

       xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
       None
       yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
Run Code Online (Sandbox Code Playgroud)

python python-2.4 defaultdict

3
推荐指数
1
解决办法
729
查看次数