shell编程基础
2018-09-10 本文已影响0人
Mr_ran
- 基础入门:
- 文件名命名要求: .sh结尾
- 文件第一行注明shell解释器: #!/bin/bash (其实该行是不会解析的,都是为了让别人看得更清晰)
- 文件执行方法:
- 给文件一个 x 权限:可执行权限 可以直接运行
- 通过sh 程序运行: 如 sh ./test.sh
- 注释:
- 单行: #
- 多行: :<<! !
- 变量
-
自定义普通变量
- 定义(一般使用大写,中间不可以有空格) A=123
- 使用 $A
- 撤销 unset A
-
例如:
定义变量
-
自定义静态变量
- 定义 readonly A=100
- 使用 $A
- 不可撤销
-
系统变量
- 定义在/etc/profile
- 让shell变量输出为环境变量: export A=100
- 让 /etc/profile 文件生效: source 配置文件
- 使用环境变量: $A
-
获取命令的返回值
- A= `ls -al`
- A=$(ls -al)
-
获取位置参数
- 如 ./variable.sh 10 20
- $n (n为数字, $0 表示命令本身,$1-$9代表参数, 十以上要用 ${10}、${11}...)
- $* (代表命令行中的所有参数,但是看成一个整体)
- $@ (代表命令行中的所有参数,但是看成一个参数组)
- $# (代表命令行中所有参数的个数)
- 如 ./variable.sh 10 20
-
预定义变量
- $$ 当前进程的进程号
- $! 后台运行的最后一个进程号
- $? 最后一次执行的命令的返回状态.如果这个变量的值为0 , 则证明上一个命令正确执行.如果非0 (具体是哪个值,由命令自己决定) 则证明上一个命令执行不正确.
-
运算符
- 基本式:
- $((运算式不能有空格))
- $[运算式不能有空格]
- expr 加空格的运算符的运算式 如 expr m + n
- * 乘 /除 %取余
- 基本式:
-
条件判断
- 基本语法:
- [ 条件 ] 条件前后要有空格
- 非空返回true
- 注意如果有 && || 等 多个条件综合判断的话. 要使用 [ 条件 ] || [ 条件 ] 格式
- 常用判断条件(判断条件前后要有空格)
- = 字符串比较
- -lt 小于
- -le 小于等于
- -eq 等于
- -gt 大于
- -ge 大于等于
- -ne 不等于
- 按照文件权限进行判断(如[ -r 文件 ])
- -r 有读的权限
- -w 有写的权限
- -x 有执行的权限
- 文件类型判断
- -f 文件存在且是一个常规的文件
- -e 文件存在
- -d 文件存在并且是个目录
- 基本语法:
-
流程控制
- 基本语法:
- if:
- if [ 条件 ]
then
程序
elif [ 条件 ]
then
程序
fi
- if [ 条件 ]
- case:
- case 变量 in
"值1")
如果变量的值等于值1, 则执行程序1
;;
"值2")
如果变量的值等于值2, 则执行程序2
;;
"*")
默认执行此程序
;;
esac
- case 变量 in
- for:
- 第一种
- for 变量 in 值1 值2 值3..
do
程序
done
- for 变量 in 值1 值2 值3..
- 第二种
- for(( 初始值;循环控制条件;变量变化 ))
do
程序
done -
如:
for循环例子
- for(( 初始值;循环控制条件;变量变化 ))
- 第一种
- while:
- while[ 条件 ]
do
程序
done
- while[ 条件 ]
- 读取控制台输入read
- 基本语法
- read [选项] [参数]
- 选项:
- -p : 指定读取值时的提示符
- -t : 指定读取值时等待的时间(秒), 如果过了这个时间,就不再等待
- 参数
- 变量: 指定读取值给哪个变量存储
-
实例:
read例子
- 基本语法
- 函数
- 系统函数
- basename 基本语法
- 返回完整路径最后 / 的部分, 常用于获取文件名
- basename [pathname] [suffix]
- basename [string] [suffix]
- suffix 被指定后,会将去掉最后suffix部分
-
实例:
basename实例
- 系统函数
- dirname 基本语法
- 返回完整路径 / 的前面的部分,常用于获取文件路径
- dirname 文件的决定路径
-
实例:
dirname实例
- 自定义函数
- 基本语法:
- function XXX(){
逻辑
}
- function XXX(){
- 如果需要传递参数,一般使用read命令
- 调用
- XXX $n1 $n2
-
实例
自定义函数实例
- 基本语法:
- if:
- 基本语法:
-