sh编程(第十章)
相关链接
程序设计语言
程序设计语言的种类千差万别。但是,一般说来,基本成分不外4种。
- 数据成分。用以描述程序中所涉及的数据。
- 运算成分。用以描述程序中所包含的运算。
- 控制成分。用以表达程序中的控制构造。
- 传输成分。用以表达程序中数据的传输。
具体来说:
- 数据类型(描述了数据在内存存储区中占据的空间大小)
- 常量
- 变量
- 运算符(+ - * / ** ^ | & ! ++ ?: 增强运算符等)
- 表达式(一般有赋值、算术、逻辑、条件、强制类型转换等类型)
- 标识符(常量名、变量名、函数名、类名等。)
- 关键字(具有特定含义的标识符,不能用来作变更名、函数名等)
- 基本控制结构(顺序结构、选择结构、循环结构)
- 函数
- 面向对象程序语言需实现封装、继承和多态
shell脚本
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它接收用户命令,然后调用相应的应用程序。
Shell Script ,即Shell脚本,就是把原本需要在命令行输入的命令组成预先放入到一个文件中,方便一次性执行。很多脚本语言实际上已经超过简单的用户命令序列的指令,还可以编写更复杂的程序。
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言(shell脚本语言)。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。
脚本语言 -> 解释器 -> 解释执行
编译语言 -> 编译器 -> 编译链接
知识点归纳
sh脚本与C
- sh
- 是解释程序,逐行读取脚本并直接执行。若不是可执行内置命令,则会复刻一个子程序来执行。
- 只有字符串类型
- 第一个可执行语句是程序的入口
- C
- 必须先链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件。
- 有多种数据类型
- 必须要有main函数
如何编写sh
-
命令行参数、内置变量、特殊字符
-
sh语句包括所有linux命令,以及I/O重定向
-
命令
-
内置命令
- .file
- break
- cd
- ……
-
Linux命令
- echo
- expr
- awk
- ……
-
控制语句
- if-else-fi
- for
- while
- until-do
- case
- continue/break
-
重定向
-
嵌入文档
-
sh函数:必须要任何可执行语句之前定义sh脚本中的所有函数
-
通配符:最有用的通配符是*,可扩展到当前目录中的所有文件
-
问题与解决思路
下面这段程序的return 语句为什么写两对括号?
1 myadd(){
2 echo "该函数计算两个数字的和"
3 echo "请输入第一个数字"
4 read a
5 echo "请输入第二个数字"
6 read b
7 return $(($a+$b))
8 }
9 myadd
10 echo "两个数字的和是$?"
双小括号 (( )) 是一个运算,作用如下:
+ ((exp))结构,扩展并计算一个算术表达式的值。若是逻辑判断,表达式exp为真则为1,假则为0。
+ 只要括号中的运算符、表达式符合C语言运算规则,都可用在\(((exp))中。作不同进制运算时,输出结果全都自动转化成了十进制。
\+ 括号内支持多个表达式用逗号分开。比如可以直接使用for((i=0;i<5;i++)),if ((\)i<5))等