Linux:shell编程的学习
2017年08月20日
缘起
- linux呢自己也算掌握一些知识,但一直吧没有太多的实践场景,shell呢,也差不多这种状态,以及呢还是看过鸟哥书中的shell部分,当时的笔记还是写在纸上的呢。
内容
chap1 Shell编程基础
- 1.1 shell的功能与类型
echo $SHELL和grep $LOGNAME /etc/passwd用于查看当前使用的shell。
- 用
sh命令用于启动Bourne Shell,用exit退出。
ps -f用于显示正在执行该脚本的Shell的名字。
- 1.2 shell基本语法
- ShellCode15.1
- 注释、通配符【
? * [] {} {}用得不太多】、重定向、管道|
{}显示多种匹配结果。例echo c{oon,op,ud}s
2>表示错误输出重定向;&>标准输出与错误输出重定向
|&也可以与标准错误输出一起使用
- 前台与后台(
&)运行
- 命令的执行顺序
- shell中3种引号
- 单引
'':单引中所有的所有特殊字符都失去特殊意义。
- 双引
"":在双引中,除了$,”,`,\以外的所有字符都解释成字符本身。
- 反引:反引中的字符被解释成命令。 echo Today ' year is
date +%y
- shell的3种运行方法
chmod 755 file 或 chmod u+x file 然后再./file
sh file 或 bash file
source file 或 . file
chap2 Shell变量及相关操作
- 2.1 Shell变量类型
- 环境变量
- HOME、PATH、TERM、PWD、PS1、PS2、SHELL、MAIL、LOGNAME、UID
env用于显示当前环境变量的值;用set可以设置相应环境变量的值。
- 位置变量
$0 :对应当前执行的命令名(或Shell程序的文件名)。
$1 :对应第1个位置参数。
- 预定义的特殊变量
$#:实际位置参数个数(不包括Shell脚本名)
$*:命令行中的所有位置参数组成的字符串
$!:上一个后台命令对应的进程号
$?:表示最近一条命令执行后的退出状态(返回值),为十进制数。
$$:当前进程号PID
- 自定义变量
- 2.2 变量操作
- 创建和设置变量:
declare和typeset用于创建变量。
- 删除变量:
unset
- 2.3 变量的赋值
- 2.4 变量的输出
- 2.5 数组变量
- 2.6 算术运算(bsh没有内置的算术运算)
expr:变量前需要$符号
let :变量前不需要$符号,但必须将单个的或者带有空格的表达式用双引号引起来。
bc或awk:进行更复杂的运算
chap3 条件测试
- 3.1 测试命令
test exp 或者 ` [] ` []前后都要有空格
- 3.2 测试文件属性
- 3.3 测试数组
chap4 shell的控制结构
- if
- case
- select
- while
- for
- until
- break和continue
chap5 函数
代码执行过程中遇到的错
win下写的sh脚本传到linx平台后存在^M
dos2unix没有的话,可以在vim模式下: %s/^M//g
- vim模式下
:set ff=unix这是\r\n与\r的区别,:w test.sh可以另存为test.sh
- 参考
参考