今天上午讲的东西好赶啊,不过还算一般(shell编程的部分)
说实话,就我自己的学习经历来说,shell的语法真的很奇怪,尤其是各种循环啥的,括号都不是成对出现,大于等于小于和逻辑符号就是不干脆的用><= && || ! 偏偏就是要搞出不一样的…真是难搞.
以下是做的笔记:
day05
-
shell 是一个用c语言编写的程序,他是用户使用linux的桥梁,shell 即是一个命令语言。也是程序涉及
语言,是一种服务器语言, -
shell脚本:是一种shell编写的脚本程序
-
shell解析器类型:
- ash,csh,ksh,bash,等
- 查看可用的shell:cat /etc/shells
- 查看当前的shell:echo $SHELL
-
shell脚本
- 指定shell解释器执行当前的shell脚本
- 创建一个1.sh文件,添加内容echo “hello shell”
- 执行bash 1.sh, 脚本的权限不需要可执行的权限
- 指定shell解释器执行当前的shell脚本
-
自解析的shell脚本
变量的定义
- 变量的定义:name=“xxxx”,= 两边不能有空格,
- 打印变量:echo name或者echo {name}
- 销毁变量:unset name,销毁以后,变量就不会再使用了
- 定义常量:readonly pi=3.14,修改常量会报错
变量分类
-
本地变量:只使用于本地当前脚本的变量
-
环境变量:(重点)通常整个系统都都可以使用的变量叫环境变量,一般都是大写的
- 查看系统的环境变量:env
- 查看指定的环境变量:echo $PATH
- 想要让一个脚本在哪里都可以执行,一般将脚本所在的目录,放到PATH
- 临时:export PATH=$PATH:当前脚本脚本路径
- 永久:
- 系统:/etc/profile
- 用户:在家目录下面,有一个.bashrc隐藏文件,
- vim .bashrc 将 export PATH=$PATH:当前脚本脚本路径放在脚本的末尾即可
- 让所有的文件都生效:source ~/.profile
-
位置变量:
- $0:表示脚本的名字
- $1-9:表示传递给脚本的参数
- $*:匹配到所有的参数
-
特殊变量:
- $#:传递给参数的个数
- $?:上次执行命令的结果,0,代表成功, 错误会有对应的数字来表示
数值类型
- 定义变量或者赋值,默认的都是普通的字符,即使你是数字或者运算符
- 若想要进行运算的时候,前面需要加let
- 示例:
a=1
let a=a+2
echo $a
字符串类型
- 单引号:字符都会保存原样,不会被解析
- 双引号:其中的变量会被解析,特殊字符不会被解析($,“,\)
- 反引号:其中的作为命令来执行
- 长度的统计:echo ${#name}
- 字符串的提取:echo ${name:2:3} 从下标为2的开始提取3个字符
数组类型
- 定义:a=(1 2 3)
- 成员访问:echo ${a[1]}
- 所有成员:echo ${a[*]}
- 个数统计:echo ${#a[@]}
各种运算
-
test:测试真假
if test 1 -lt 2;then
echo “ok”
fiif [ 1 -lt 2 ];then echo "true" fi
符号 说明
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
-eq 等于
-ne 不等于 -
逻辑判断
符号 说明
-a 逻辑与(and),也可以使用两个&&来代替
-o 逻辑或(or),也可以使用两个||来代替
! 逻辑非(not)
分支结构
循环结构
emm 那个文件没pull下来,过几天再弄吧