我正在尝试编写一个将检查两个错误标志的脚本,并且如果一个标志(或两者)被更改,它将回显 - 发生错误.我的剧本:
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)
我的括号搞砸了吗?
我正在尝试并且失败,检索所有枚举值并使用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) 我有一个.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) 不幸的是,对我来说,我需要使脚本向后兼容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) bash ×2
defaultdict ×1
enums ×1
flags ×1
if-statement ×1
java ×1
java-8 ×1
java-stream ×1
list ×1
python ×1
python-2.4 ×1
text-files ×1