一环境变量
1 概述
bash shell 使用一种称为环境变量的特性来存储有关shell会话和工作环境的信息,该特性还允许假数据存储到内存中,以便于在shell运行程序或脚本访问他们,这是一种便捷的、用于存储持久型数据的方式,这些数据可以标识用户账号、系统、shell或任何需要存储的内容特性。
2 环境变量的分类
1 当前环境变量
仅对当前环境有效,当重新定义时,其将会消失
2 用户环境变量
当用户切换到普通用户,此环境变量将无效
3 系统环境变量
针对系统的所有用户均有效 查看系统环境变量, 设置系统级环境变量
刷新
二 用户别名
alias
1 环境级别名
重新开启一个窗口,则提示
2 用户级别名:
刷新 本地窗口查看 重新开一个窗口查询,必须重新开,因为其在开启时会读取其中的内容,若使用上次开启的,则别名的定义不会被读入其中: 切换到一般用户,则该指令失效
3 系统级别别名
定义将其写入/etc/bashrc文件中 进行刷新 在root用户下查看全局别名 切换到一半用户模式下进行查看 使用 4 用户别名的删除 1 删除系统级别名 2 删除用户级别名 3 删除 进行文件删除 并刷新查看 进行删除 查看
三 参数传入
1 read 参数传递
如果不指定-p,则显示比较单调 选项 -p : 输出要显示的指令 -s : 表示输入的结果不回显
- t : 表示不输入的超时时间
- -n : 接受的字符个数
2 通过在脚本后面加参数的方式传递参数
$0 表示传入参数的脚本的名称, $1 表示传入的第一个参数 $2 表示传入的第二个参数 以此类推 $# 表示传入的参数的个数总和 $* 表示将传入的所有参数进行整体成一个字符串显示 $@ 表示将所有的参数单个显示出来
3 函数参数的传递
其中$1 表示函数调用后面的第一个参数 $2 表示函数调用后面的第二个参数 以此类推
四 流控语句
1 if
1 普通if 语句 格式 if 条件 then 动作 fi 2 多分支if语句 if 条件 then 动作 elif 条件 then 动作 ... else 动作 fi if循环的匹配效率过低,因为其是从上向依次次匹配,相较于case,则if效率更低
2 case
case 值 in 模式1) command1 command2 ... commandN ;; 模式2) command1 command2 ... commandN ;; esac
3 for 循环语句
1 一般格式
for i in 可遍历的对象 do 动作 done
2 特殊格式
for (( i=1 ;i<=9;i++)) do 动作 done
4 while 循环语句
While 循环用于不断执行一系列命令,也用于从输入文件中读取数据,命令糖厂为测试条件,格式为:
1 while 命令格式
While condition Do Commanf Done
2 一般循环
2 死循环
5 expect语句
expect一般用于实现用脚本来自动远程登录,对远程机器执行相关操作
1 安装
2 其脚本的作用是不用起输入yes或no而进行远程登录:
其中上面的 set IP [ lindex $argv 0 ] 表示获取第一个参数的值给IP这个变量 spawn 表示调用ssh root@$IP 这个动作 "yes/no" { send "yes\r";exp_continue} 表示当遇到前面的命令时执行yes并回车 "password" { send "$AUTH\r"} 表示当遇到password时执行后面的命令。 interact 表示进行继续操作,如果不加此参数,则自动退出。而不会登录到node2节点上。
3 expect 语句嵌套进bash语句中
4 运算符
1 (()) 2 let 3 expr 4 $ [ $a + $b ],必须加号两边要有空格: 5 bc Linux上的计算机
5 如果编译多行到一个文件中,可以使用cat
cat >文件名 <<\EOF 要插入的文件内容 第一行文字 第二行文字 第三行文字 EOF 6 sleep 函数:用于设置脚本运行的延迟。 7 shift 函数 位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。非常有用的 Unix 命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等。在 shift 命令执行前变量 $1 的值在 shift 命令执行后就不可用了。
六 实战案例
1 通过配置文件IP和用户密码的方式自动获取该主机的主机名
2 编写用户的创建和删除脚本
3 编写文件的创建与删除脚本