Linux网络管理应用 - Shell语言
一 : 概念
1 : Shell是命令解释程序。是用户和Linux内核之间的接口程序
2 : shell是程序设计语言(脚本语言),可以用来编写脚本程序,功能强大
二 :主要版本
echo & SHELL
三 Shell中变量 赋值 输出变量值
1 : 变量是什么?
是程序运行时临时存储数据的内存空间,程序运行结束空间释放,数据销毁
2 :
变量类型:
自定义变量 | 坏境变量 |
---|---|
通过赋值语句完成变量说明并予以赋值 | 系统中默认存在的变量 |
赋值:
在给变量赋值时,若字符串中包含空格、特殊转义字符,则必须用双引号将值括起来。常见转义字符: ( ) \ ‘
四 : Shell变量的作用域
export内置命令将局部变量设置为全局变量
类型 | 局部变量 | 全局变量 |
---|---|---|
范围 | 仅仅限制在某一个进程中 | 包括所有进程 |
五 : 输入出重定向与管道
重定向 :就是不使用系统的标准输入、标准输出终端,而进行重新的指定
类型 | 定义 |
---|---|
输出重定向 | 命令正确的执行结果不在屏幕上显示,而是保存到某一文件的操作 |
追加输出重定向 | 将输出的正确内容追加到文件已有内容的后面,而不会覆盖其内容(>>来实现) |
错误输出重定向 | 使用“2>”将命令执行的错误信息写入到指定文件,会覆盖指定文件中的内容(2>>来追加) |
输入重定向 | 用“<”符号来实现 |
六 : 脚本的建立与执行
1 :建立
使用vim编辑Shell脚本文件
2 :执行 (3种方式)
1)文件名作bash命令的参数
[root@localhost ~]# bash hello.sh
2)将脚本文件的访问权限改为可执行,作为可执行文件调用
[root@localhost ~]# chmod a+x hello.sh
[root@localhost ~]#./hello.sh 当前目录下找到并执行
3)把脚本文件路径加到PATH环境变量中去
[root@localhost ~]#PATH=$PATH: $PWD
[root@localhost ~]#hello.sh 可在任何路径下执行脚本
七 :运算符
算术运算符 例如 : a=10; b=6
运算符 | 举例 |
---|---|
" + " | echo expr $a + $b 或者printf “expr $a + $b \n” (红色有斜撇包围) |
"- " | echo expr $a - $b |
" * " | v2= expr $a \* $b 用\把" * "转义为普通字符* |
" / " | echo expr $a / $b |
" % " | echo expr $a % $b |
关系运算符 表达式成立返回 true,否则false
运算符 | 说明 |
---|---|
-eq | equal 两个数是否相等, |
-ne | 两个数是否不相等 |
-gt | 左边的数是否大于右边的 |
-lt | 左边的数是否小于右边 |
-ge | 左边数是否大于等于右边数 |
-le | 左边数是否小于等于右边数 |
字符串运算符 假定变量 a = “abc”,变量 b 为=“efg”
运算符 | 说明 | 举例 |
---|---|---|
= | 检测两个字符串是否相等,相等返回 true | [ $a = $b ] 返回 false |
!= | 检测两个字符串是否相等,不相等返回 true | [ $a != $b ] 返回 true |
-z | 检测字符串长度是否为0,为0返回 true | [ -z $a ] 返回 fals |
-n | 检测字符串长度是否不为 0,不为 0 返回 true | [ -n “$a” ] 返回 true |
$ | 检测字符串是否为空,不为空返回 true | [ $a ] 返回 true |
文件类型测试运算符
运算符 | 说明 | 举例 |
---|---|---|
-f file | 是否普通文件,如是 | [ -f $file ] 返回 true |
-d file | 是否目录,如是 | [ -d $file ] 返回 true |
-x file | 是否有执行权限,如是 | [ -x $file ] 返回 true |
-r file | 检测文件是否可读,如是 | [ -r $file ] 返回 true。 |
-w file | 检测文件是否可写,如是 | [ -w $file ] 返回 true。 |
-s file | 检测文件大小是否大于0,如大于 | [ -s $file ] 返回 true。 |
-e file | 检测文件是否存在,如存在 | [ -e $file ] 返回 true。 |
布尔测试运算符
运算符 | 说明 | 举例 |
---|---|---|
-o | 或测试 [ 10 -lt 20 -o 30 -gt 100 ] | 返回true or |
-a | 与测试 [ 10 -lt 20 -a 30 -gt 100 ] | 返回false and |
! | 非测试 [ ! false ] | 返回 true not |
注意:条件表达式要放在方括号之间,数值和运算符、括号之间要有空格