zoukankan      html  css  js  c++  java
  • Bash shell

    Bash 脚本结构化

      1if-then语句
      2         ○ bash将会运行if后面的命令,如果该命令运行结束的退出码是0(运行成功),执行then部分的命令
      3         ○ fi语句表示if语句到此结束
      4         ○ 在then后面可以使用多条命令(命令块),需要缩进
      5if-then-else语句
      6             § 当if后命令返回的退出码为0,执行then后命令,不为0,执行else部分命令
      7             § else也可以包含多条命令
      8     • 嵌套if
      9         ○ 可以使用elif语句代替嵌套的if-then语句让命令更清晰
     10         ○ 在elif语句中,紧跟其后的else语句术语elif代码块,它们不属于之前的if-then代码块
     11     • test命令
     12         ○ 数值,字符串,文件比较
     13         ○ 数值比较
     14             n1 -eq n2     检查 n1 是否与 n2 相等
     15             n1 -ge n2     检查 n1 是否大于或等于 n2
     16             n1 -gt n2     检查 n1 是否大于 n2
     17             n1 -le n2     检查 n1 是否小于或等于 n2
     18             n1 -lt n2     检查 n1 是否小于 n2
     19             n1 -ne n2     检查 n1 是否不等于 n2
     20             § 不能比较浮点数
     21         ○ 字符串比较
     22             str1 = str2     检查 str1 是否和 str2 相同
     23             str1 != str2    检查 str1 是否和 str2 不同
     24             str1 < str2     检查 str1 是否比 str2 小
     25             str1 > str2     检查 str1 是否比 str2 大
     26             -n str1 检查     str1 的长度是否非0
     27             -z str1 检查     str1 的长度是否为0
     28             § 字符串相等性
     29                 □ 测试大于或小于时,在大于号&&小于号前加上反斜杠,否则会被bash当成重定向符
     30                 □ 在比较测试中,大写字母被认为小于小写字母
     31                 □ -n判断字符串长度非0,-z判断字符串长度为0
     32         ○ 文件比较
     33             -d file     检查 file 是否存在并是一个目录
     34             -e file     检查 file 是否存在
     35             -f file     检查 file 是否存在并是一个文件
     36             -r file     检查 file 是否存在并可读
     37             -s file     检查 file 是否存在并非空
     38             -w file     检查 file 是否存在并可写
     39             -x file     检查 file 是否存在并可执行
     40             -O file     检查 file 是否存在并属当前用户所有
     41             -G file     检查 file 是否存在并且默认组与当前用户相同
     42             file1 -nt file2     检查 file1 是否比 file2 新
     43             file1 -ot file2     检查 file1 是否比 file2 旧
     44     • 复合条件测试
     45         ○ &&和||
     46if-then高级特性
     47         ○ 双括号命令
     48             § ((expression))    #expression可以是任意的标准数学运算符或标准表达式
     49             val++     后增
     50             val--     后减
     51             ++val     先增
     52             --val     先减
     53             !         逻辑求反
     54             ~         位求反
     55             **        幂运算
     56             <<        左位移
     57             >>        右位移
     58             &         位布尔和
     59             |         位布尔或
     60             &&        逻辑和
     61             ||        逻辑或
     62             § 注意,双括号中的数学运算符不需要转义
     63         ○ 双方括号
     64             § [[expression]]   #模式匹配
     65             § 匹配模式支持正则表达式
     66     • case语句
     67         ○ 代替多个if-then嵌套
     68         ○ case命令采用列表格式检查一个变量的多个值
     69         ○ *号会捕获所有与已知模式不匹配的值
     70     • for命令,列表迭代,类似Python的for循环
     71         for var in list
     72         do
     73             commmands(多条命令)
     74         done
     75         ○ 除非手动修改,var会保持最后一次迭代的值,直到脚本结束
     76     • 从命令读取值
     77         ○ 使用命令的输出作为变量
     78         ○ 将文件的路径,名称赋值给变量
     79     • 更改字符段分分隔符
     80         ○ 默认分隔符 空行,制表符,换行符
     81         ○ 临时改变环境变量IFS的值
     82         ○ 指定多个分隔符,只需要在给IFS赋值时将各个分隔符串起来
     83     • 用通配符读取目录
     84         ○ 强制使用文件匹配扩展
     85         ○ Linux中文件名中含有空格是合法的,要适应这种情况,应该将$file用双引号圈起来
     86     • C风格的for循环
     87         ○ 双括号避免和bash shell的语法发生冲突
     88         ○ 括号中的变量不用使用美元符,变量运算不需要进入expr,变量赋值可以有空格
     89         ○ 和C语言类似,在for循环中可以使用多个变量
     90     • while循环
     91         while test command
     92         do
     93             other commands
     94         done
     95         若test command的退出码为0
     96         执行commands
     97         ○ 方括号检查shell变量
     98         ○ 使用多个测试命令时,只有最后一个命令的退出码会被用来决定什么时候退出循环
     99     • until命令
    100         ○ until与while相反,当返回一个不为0的退出码时,执行commands
    101         ○ 当返回的退出码为0时,循环结束
    102         until test command
    103         do
    104             other commands
    105         done
    106         ○ 使用多个测试命令时规则和while相同
    107     • 嵌套循环
    108         ○ 可以混用不同的循环方式(forwhileuntil109     • 循环处理文件数据
    110         ○ ??????????
    111     • 循环控制
    112         ○ break
    113         ○ continue
    114     • 处理循环的输出
    115done > output.txt   #将for命令的结果重定向到output.txt
    116         ○ 重定向文件不存在则shell会创建一个该文件
  • 相关阅读:
    NTDDI_VERSION,_WIN32_WINNT,WINVER,_WIN32_IE
    SOL_SOCKET, SO_KEEPALIVE
    荣幸的一天
    值得思考的一些东西
    一个flash前后台开源框架的的站点
    30个AS3开源项目
    [算法] doj 1066 最长上升子序列
    [算法] doj 1605 Common Subsequence 公共子序列
    华为EC321CDMA PCMICA 无线网卡Ubuntu下使用
    my_judged.cc 的初稿
  • 原文地址:https://www.cnblogs.com/CofJus/p/10174664.html
Copyright © 2011-2022 走看看