一门程序设计语言有哪些必备的要素和技能?
一种编程语言基本上包括:
- 数据类型
- 运算符
- 控制语句
其中数据类型包括:基本类型,集合类型,有了数据类型,才有变量的存在。
运算符:计算机的本质就是运算,而写程序,也是为了帮助人去计算,所以一种编程语言肯定有运算符
控制语句:人类社会发生的事情,都是有条件的,存在即为正确,因为有它存在的条件。
所谓控制语句也就是设定一个条件,当某一个条件发生了,会发生什么事情。
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号 |