原文:Differences Between Single and Double Brackets in Bash

概述

当我们在 Bash 中做变量比较时,通常可以交换地使用单括号 [] 和双括号 [[]]。比如,我们可以使用表达式 [ 3 -eq 3 ][[ 3 -eq 3 ]] 来比较 3 是否等于 3。两个表达式都会执行成功,那两者的区别是什么呢?

在本文中,我们会讨论单括号和双括号之间的一些区别。

代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # author: a2htray # create date: 2023/3/12 """ PAT 乙级 1031 """ weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] m = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] def weight_sum(digits): total = 0 for i, digit in enumerate(digits): total += digit...

代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # author: a2htray # create date: 2023/3/12 """ PAT 乙级 1029 """ if __name__ == '__main__': statement1 = input() statement2 = input() got_dict = {} statement1 = statement1.upper() statement2 = statement2.upper() for c in statement1: if c not in got_dict: if c not in...

jobs 命令主要用于显示系统中的任务列表及运行状态。在 Linux 中,每一个 job 都有一个唯一 ID,系统管理员通过任务 ID 对任务进行管理,可使其在前后或后台运行。通常任务和进程是等价的,只在于说侧重不同。即任务之于用户,相应地,进程之于系统。

代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # author: a2htray # create date: 2023/3/9 """ PAT 乙级 1026 """ if __name__ == '__main__': start_clock, end_clock = map(int, input().split(' ')) duration = 1.0 * (end_clock - start_clock) / 100 h = int(duration // 3600) m = int(duration % 3600 // 60) s = str(duration %...

flag 包定义了一系列函数,可用于定义命令行参数,支持的参数类型如下:

  • string:flag.StringVar 函数
  • bool:flag.BoolVar 函数
  • time.Duration: flag.DurationVar 函数
  • int: flag.IntVar 函数
  • uint: flag.UintVar 函数
  • float64: flag.Float64Var 函数
  • int64: flag.Int64Var 函数
  • uint64: flag.Uint64Var 函数

在命令行工具的开发过程中,我们常常需要设置一个同时支持短名称和长名称的选项,如 -d 等价于 --debug-p 等价于 --password。在使用 Go flag 包的情况下,该需求的实现相当简单,只需要定义两个不同的 flag 指向同一个变量即可。

代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # author: a2htray # create date: 2023/3/8 """ PAT 乙级 1024 """ from typing import List class SciNumber: def __init__(self, s: str): self.sign = '-' if s[0] == '-' else '' nums, exp = s[1:].split('E') self.nums = [v for v in nums] self.left_move = exp[0] == '-' self.exp =...

代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # author: a2htray # create date: 2023/3/8 """ PAT 乙级 1023 """ if __name__ == '__main__': digits = [] for i, digit in enumerate(map(int, input().split(' '))): digits += [i] * digit digits.sort() if digits[0] != 0: print(''.join(map(str, digits))) exit(0) for i, v in...

代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # author: a2htray # create date: 2023/3/7 """ PAT 乙级 1021 """ if __name__ == '__main__': counts = [0] * 10 for s in input(): counts[int(s)] += 1 for i, count in enumerate(counts): if count != 0: print('%d:%d' % (i, count))