码迷,mamicode.com
首页 > 系统相关 > 详细

shell变量与基本流控语句

时间:2018-04-02 16:33:17      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:shell语句   运算符、参数传递等   

一环境变量

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 编写文件的创建与删除脚本
技术分享图片

shell变量与基本流控语句

标签:shell语句   运算符、参数传递等   

原文地址:http://blog.51cto.com/11233559/2093841

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!