• 学习笔记3


    一门程序设计语言有哪些必备的要素和技能?

    一种编程语言基本上包括:

    • 数据类型
    • 运算符
    • 控制语句

    其中数据类型包括:基本类型,集合类型,有了数据类型,才有变量的存在。
    运算符:计算机的本质就是运算,而写程序,也是为了帮助人去计算,所以一种编程语言肯定有运算符
    控制语句:人类社会发生的事情,都是有条件的,存在即为正确,因为有它存在的条件。
    所谓控制语句也就是设定一个条件,当某一个条件发生了,会发生什么事情。

    shell中的运算符

    命令 描述
    && 逻辑与
    || 逻辑或
    $0 参数0,即用于运行脚本的命令
    $ 1 第一个参数(更改编号以访问其他参数)
    -eq 平等检查
    -ne 不平等检查
    -lt 少于
    -le 小于或等于
    -gt 比...更棒
    -ge 大于或等于

    shell中的控制语句

    • if语句

    单分支判断格式:

          if [];then
    
             echo statement
    
         fi
    

    双分支判断格式:

          if [];then
    
             echo statement
    
         else 
    
             echo statement
    
          fi
    

    多分支判断

           if [];then
    
              echo statement
    
           else 
    
             echo statement
    
           elif
    
              echo statement
    
            fi
    
    • for语句

    for NUM in {1..3}
    for NUM in {a..f}
    for NUM in seq 1 3
    for NUM in seq 1 2 5 //可以设定步长;2就是步长,输出为 1 3 5

    注意:{1..5}是1到5,seq 1 5 也是1到5,但seq可以设定步长

    还可以是计算的方式(和C语言类似)

    for((A=1;A<=10;A++))
    do
    done

    • while 与 until 语句

    如果你需要进行循环操作而是先不知道需要循环的次数,可以使用 while 循环,while 循环的语法如下:

    while condition
    do
    statements
    done
    until 循环语句的功能与 while 一样,不同的是对于条件判断结果的处理上。until 循环的语法如下:

    until condition
    do
    statements
    done
    在 while 和 until 语句中,condition 是判断条件,不同的是,while 语句中,若判断条件为真,则执行循环体;until 语句中,若判断条件为真,则停止执行循环体。

    • 三个退出命令:exit,break,continue

    exit:退出当前的循环,脚本整体退出 ;
    break:退出循环,但循环之后的命令依旧会执行;
    continue:退出本次循环进行下一次循环;

    shell中的数据类型

    • 字符串

    字符串是shell编程中最常用的数据类型,可以用’’,"",也可以不用引号,这里建议使用双引号,双引号中可以解析变量和特殊字符。

    • 整数

    在shell中所有的类型默认都是字符串类型,所以不手工指定变量类型是不能进行数值运算
    如果要进行数值运算,可以用( ( 运 算 式 ) ) , 或 者 ((运算式)),或者((运算式)),或者[运算式]的方式进行运算

    $(($a + $b))
    $[$a + $b]

    • 数组

    shell支持一维数组,不支持多维数组,并且不限定数组的大小,用括号来定义数组,每个数组元素用逗号隔开,访问数组元素可以使用下标访问。

    array = (ele1, ele2, ele3...)
    array[0]...
    $array[index]

    shell特殊变量

    $0 当前脚本的文件名或者解释器。
    $n(n≥1) 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。
    $# 传递给脚本或函数的参数个数。
    $* 传递给脚本或函数的所有参数。
    $@ 传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 与 $* 稍有不同,$*的所有参数是一个数据,而$@一个参数就是一份数据
    $? 上个命令的退出状态,或函数的返回值
    $$ 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。

    export 变量名=变量值 # 创建环境变量并赋值

    一些主要的系统环境变量如下

    $HOME 当前用户的家目录
    $PATH 以冒号分隔的用来搜索命令的目录列表,决定了 shell 将到哪些目录中去寻找命令或程序
    $PS1 命令提示符,通常是 $ 字符,也可以自行设置
    $PS2 二级提示符,用来提示后续的输入,通常是 > 字符
    $IFS 输入域分隔符。当 shell 读取输入时,它给出用来分隔单词的一组字符,通常是空格、制表符和换行符
    $0 shell 脚本的名字
    $# 传递给脚本的参数个数
    $$ shell 脚本的进程号(PID),脚本程序通常会用它来生成一个唯一的临时文件,如/tmp/tmpfile_$$

    位置参数变量

    位置参数变量主要用来向脚本中传递参数或数据,变量名不能自定义,变量作用也是固定的,主要有以下几种位置参数变量

    位置参数变量 描述
    $1 $2、....... 脚本程序的参数,分别代表程序的第一个参数,第二个参数......程序第10个以上参数需要用大括号包含如 ${10}
    $* 代表命令行中的所有参数。在一个变量中将所有参数列出,各参数之间用环境变量 IFS 中的第一个字符分隔开。
    $@ 和 $* 一样,也包含了命令行中的所有参数,但是不使用 IFS 环境变量,即使 IFS 为空,参数也是分开显示的
    注:$ 将所有的参数视为一个整体,而 $@ 将所有的参数分别视为单独的个体。一般来说,采用 $@ 来访问脚本程序的参数会比较好,不必担心 IFS 所设置的分隔符为空而导致各参数连在一起分不清楚。*

    预定义变量

    预定义变量是在bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的,实际上,位置变量也是预定义变量的一种,除了上面介绍的,这里在介绍两个:

    预定义变量 描述
    $? 保存最后一次执行的命令的返回状态。如果$?的值为0,表示上一个命令成功执行;如果值非0,表示上一个命令没有成功执行。
    $! 用于保存后运行的最后一个进程的PID号

    代码练习:https://gitee.com/zhang_yu_peng/practice-code/blob/master/Tx.cpp

  • 相关阅读:
    强连通分量(Kosaraju)
    拓扑排序
    树状数组BIT
    差分
    RMQ(ST表)
    LCA(Tarjan)
    LCA(ST倍增)
    海亮SC2019 树上数数(转载)
    海亮SC
    【十二省联考2019】异或粽子/可持久化01trie
  • 原文地址:https://www.cnblogs.com/1208499954qzone/p/15333816.html
Copyright © 2020-2023  润新知