学习笔记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

原文地址:https://www.cnblogs.com/1208499954qzone/p/15333816.html