20191305李天琦第十章学习笔记
20191305李天琦第十章学习笔记
本章介绍了sh脚本和其与C语言的区别,如何编写sh脚本(变量、语句、命令、常规系统命令和命令替换),解释了sh控制语句和他们的使用方法,说明了如何编写sh函数以及使用参数调用函数。
sh脚本是解释程序,它会逐行读取sh脚本并直接执行,而C语言恰恰相反,它必须先编译链接,再通过主sh的子进程运行文件。除此之外,sh脚本中每一个变量都是字符串且不需要main函数,而C语言必须要有一个main函数,其变量也必须要有一个类型。
10.3-10.8
这部分主要说明如何编写sh脚本,包括命令行参数、sh变量、引号、sh语句、常规命令以及命令语句。
内置命令:
.file:读取并执行文件。
break [n]:从最近的第n个嵌套循环中退出。
cd [dirname]: 更换目录。
continue[n]:重启最近的第n个嵌套循环。
eval [arg...]:计算一次参数并让sh执行生成的命令。
exec [arg...]:通过这个sh执行命令,sh将会退出。
exit [n]:使sh退出,退出状态为n。
export [var…]:将变量导出到随后执行的命令.
read [var...]:从stdin 中读取一行并为变量赋值。
set [arg...]:在执行环境中设置变量。
shift:将位置参数$2 $3...重命名为 $1 $2...。
trap [arg] [n]:接收到信号n后执行参数。
umask [ddd]:将掩码设置为八进制数 ddd 的。
wait pid]: 等待进程 pid,如果没有给出pid,则等待所有活动子进程。Linux命令
echo命令:通常将相邻的多个空格压缩成一个空格,除非有引号
expr命令:可将字符串转换为数字,进行操作后再转回字符串
Linux命令:
echo命令:将参数字符串作为行回显到stdout。
expr命令:间接更改sh变量的值。
管道命令:作为过滤器。
实用命令:
axk:数据处理程序。
cmp:比较两个文件。
comm:选择两个排序文件共有的行。
grep:匹配一系列文件的模式。
diff:找出两个文件的差异。
join:通过使用相同的键来连接记录以比较两个文件。
sed:流或行编辑命令。
sort:排序或合并文件。
tail:打印某个文件的最后口行。
tr:一对一宇符翻译。
uniq:从文件中删除连续重复行。
sh支持多种控制语句,可类比C语言的语句。,包括if-else-fi、for、while、until-do、case以及continue和break语句。if-else-fi语句和C语言中的if-else语句类似,但需要一个fi作为结束语句。for、while、until-do语句也十分类似,但需要有do-done关键字
10.10-10.16 这部分主要是讲解如何编写sh函数以及如何使用参数调用sh函数。
常用命令语法及功能
echo “some text”: 将文字内容打印在屏幕上
ls: 文件列表
wc –l filewc -w filewc -c file: 计算文件行数计算文件中的单词数计算文件中的字符数
cp sourcefile destfile: 文件拷贝
mv oldname newname : 重命名文件或移动文件
rm file: 删除文件
grep ‘pattern’ file: 在文件内搜索字符串比如:grep ’searchstring’ file.txt
由于sh逐行执行命令1,所以必须在任何可执行语句之前定义sh脚本中的所有函数。而在被调函数中,参数被引用为$0、$1到$n,其中通常$0是函数名,$1到$n是与命令行参数对应的位置参数。函数执行结束时,$?表示其退出状态,成功时状态为0,否则状态为非0
sh中的通配符:
*:扩展到当前目录中的所有文件
?:查询某文件名中的字符
[]:查询文件名中一对[]中的字符