首页 > 其他分享 >bash test 备忘

bash test 备忘

时间:2022-11-28 11:57:29浏览次数:44  
标签:文件 shell f1 相等 备忘 括号 set test bash

一直以来都很抗拒写shell脚本。从编程语言的角度评价,所有的shell都是相当糟糕的语言,到处都充满了混乱、丑陋和怪癖。我坚持认为,只要有可能,系统脚本就应该用一种成熟的、严肃的语言来写——至少是像Python这样的语言。然而,有时候,却不得不用shell编程。比如,当你给一台路由器编程的时候,它的存储空间可能不足以安装任何一门严肃的语言,shell就成了唯一的选择。因为不想付出记忆负担,而语言又缺乏一致性无法“凭直觉”去尝试,为了避免每次写shell脚本都要为了查一些基本操作而满世界google,还是在这里记录一些东西吧,找起来方便。

在shell中,测试是一个物理上存在于磁盘上的“命令”而不是“运算符”,而且有太多种:test, [, [[, 我实在不想去深究它们有什么区别,搞清楚这些东西就如同去翻历史的裹脚布。

这里大概记录测试的类型:

逻辑运算

-a   # 逻辑 and, 类似于 &&
-o   # 逻辑 or, 类似于 ||
!    # 逻辑 not

整数比较

-eq   # 相等
-ne   # 不相等
-gt   # 大于
-ge   # 大于等于
-lt   # 小于
-le   # 小于等于

# 由于上面的比较运算太过于反人类,于是又发明了双括号。双括号里面可以用正常人类可读的代码
(("$a" < "$b"))
(("$a" >= "$b"))

字符串比较

=     # 比较字符串是否相等
==    # 另一种相等测试,在单括号 [ ] 和双括号 [[ ]] 中有不同的行为
!=    # 不相等
<     # 小于(比较 ascii 码)
>     # 有没有人给我解释一下,为什么比较字符串可以用 >, <, 而比较数字要用 -lt, -gt?
-z    # 空字符串测试
-n    # 非空字符串测试

文件测试

-e    # 文件存在
-f    # 文件是普通文件(不是目录或设备)
-d    # 文件是一个目录
-h    # 文件是符号链接
-L    # 和上面一样
-b    # 文件是块设备
-c    # 文件是字符设备
-p    # 文件是一个管道
-S    # 文件是一个 socket
-s    # 文件非零
-t    # 测试给定的文件描述符是否与终端设备相关联
      # 可用于检查脚本中的 stdin 或 stdout 是否为终端 [ -t 0 ], [ -t 1 ]
-r    # 文件有读权限
-w    # 文件有写权限
-x    # 文件有可执行权限
-g    # set-group-id (sgid) flag set on file or directory
-u    # set-user-id (suid) flag set on file
-k    # sticky bit set
-O    # 你是文件的拥有者
-G    # 你和文件的拥有者同组
-N    # 文件在最后一次读取后被修改过
-nt   # [ $f1 -nt $f2 ] 前面的文件更新
-ot   # [ $f1 -ot $f2 ] 前面的文件更旧
-ef   # [ $f1 -ef $f2 ] 两个文件硬链接到相同的文件

标签:文件,shell,f1,相等,备忘,括号,set,test,bash
From: https://www.cnblogs.com/zh-geek/p/16931800.html

相关文章

  • VS2019使用gtest
    VS2019使用gtestGoogleTest测试框架介绍(一)_liitdar的博客-CSDN博客_gooletest术语test/testcase/testsuitMeaningGoogleTestTermISTQBTermExercisea......
  • 拓端tecdat|R语言代写周氏检验(Chow test) 检验回归中结构不稳定性的虚拟变量的替代方
    全球化时代快速增长的经济体之一是埃塞俄比亚经济。在低收入国家中,它已成为在国内生产总值(GDP)中实现两位数增长率的少数几个国家之一。然而,关于两位数的增长率存在很多争论,......
  • git 备忘
    git理解--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdownGit对于版本的管理其实是对于提交的管理ubuntu安装--java......
  • AtCoder Beginner Contest 279
    咕咕咕。D-Freefall三分求极值,注意下标得是整数,所以最后再搜索三分结果附近的整数。直接求导应该也可以。AC代码//#defineMULTIPLE_TASK#include"hira/main.cp......
  • test
    ......
  • 备忘录模式(Memento)
    支持回滚状态的一种模式。核心:创建一个拷贝对象进行备份。给数据对象两个方法:1、进行备份。2、回滚。需要备份的数据:publicclassDatas{privateint......
  • AtCoder Beginner Contest 279
    A-wwwvvvvvv原题链接题意给出仅由v和w组成的字符串\(S\)。输出\(S\)中有多少个尖点(一个v有一个尖点,一个w有两个尖点)。分析输入字符串,遍历每个字符。如果这个......
  • 2022 Fudan Programming Contest Review
    2022FudanProgrammingContestReview一则短小的回顾,涉及比赛之外的东西比比赛本身可能要多。赛前干了什么呢?不妨把“赛前”这两个字拖得再长一些,首先得延长到网络预......
  • TOYOTA SYSTEMS Programming Contest 2022(AtCoder Beginner Contest 279)A-D题(暂定)
    A,w是两个v是一个送分题#include<bits/stdc++.h>usingnamespacestd;#definemaxn400100#defineintlonglongintread(){intans=0,f=1;charch......
  • D110设计模式_4备忘录模式20221122
     备忘录模式(MementoPattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。客户不与备忘录类耦合,与备忘录管理类耦合。优点: 1、给用......