找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
bash 拜shell
可以理解为:指令的堆积
脚本(命令)解释器
{}引用标量
[]条件运算,做比较

1、linux中常见的shell脚本(shell解释器):sh、bash、asd、csh、ksh
2、linux里默认发行版本中shell脚本是bash,所以linux进程也叫bash进程
3、shell能用来做什么
    a、将负杂命令简单化(操作步骤较复杂实现简单化)
    b、完成自动打包部署发布
    c、清理磁盘空间
    d、总之一切有规律的活动都可以尝试写shell脚本来实现


bash
变量 : 内存空间、存放数据的空间。
变量名:相当于一个指针,指向该变量。

变量的类型:(考虑变量的作用域的问题)
1、环境变量:作用范围为当前的shell进程以及子进程中
2、本地变量:作用范围为当前的shell进程
3、局部变量:作用范围为当前shell脚本中的某一块中
4、特殊变量
       a、$#:获取shell命令中参数的个数
       b、$*:获取shell中中所有的参数
       c、$?:获取上一命令执行的结果(0代表成功,非0代表失败)

定义本地变量:name=“obama”                      打印变量echo $name
查看本地变量:set
销毁本地变量:unset+变量名

定义环境变量:(是一个导出的本地变量)export yy=‘xupeng’
查看环境变量:export
销毁环境变量:unset+变量名

变量的引用:
     1、$(name),$name

符号引用:
     1、单引号(‘’):它表示强引用,所引用的变量(值)不可改变(单引号中是什么就输出什么)
     2、双引号(“”):它表示弱引用。所引用的变量可改变
     3、反引号(``):它表示命令替换的作用(显示实时的命令结果)

bash中的常见参数:
     -n:检查语法(只能检查语法错误不能检查脚本的指令错误)
     -x:调试脚本

运算:(+ -  *  /)
expr 10 \* 10   乘法的*需要转义
expr实现运算效果(只能实现整数、字符间的运算)

shell中的条件测试:
条件测试:
     整数测试:
            -gt(greater)  :是否大于  (条件成立则输出0 ,否则为1)
                 [root@localhost bin]# a=4
                 [root@localhost bin]# b=3
                 [root@localhost bin]# [ $a -gt $b ]
                 [root@localhost bin]# echo $?
                 0
             -ge(greater equ)  :是否大于等于
             -lt(little):是否小于
             -le(little equ):是否小于等于
             -eq(equ):是否等于
             -ne(not equ):是否不等于
字符串测试
ASCII数值越大,字符比较时其值越大(只做了解,可不做讲解)
           "$a">"$b"  是否大于
           "$a"=="$b" 是否等于
         -z (-zero) "$a":           长度是否为空   
       -n(-non zero) "$a":    长度是否不空   

文件测试:测试文件的存在性以及属性测试
          -e(exist)  :是否存在   eg:#[-e /etc/文件名]  ,存在为真,否则为假
          -f(file):文件是否为普通文件
          -d(dirctory) 文件是否为目录
          -h() 是否存在且为符合链接文件 -----/dev
          -b(block) 是否存在且为块设备文件   -----/dev
          -s(sock) 是否存在且为套接文件     -----/var/lib/mysql/mysql.sock
          -p(post) 是否存在且为管道文件

           -r 当前用户对文件是否有读权限
           -w 当前用户对文件是否有写权限
           -x 当前用户对文件是否有执行权限

脚本实战:
1、if判断语句:单分支和多分支
格式:(单分支)
if  条件 ;then
    分支
else
    分支
fi
2、if多分支
格式
if 条件;then
   分支
elif 条件;then
.......
fi

2、脚本参数  ($0...........$n)
sh test2.sh /gsf/a /gsf/b /gsf/c
eg:判断给定数据的类型
#!/bin/bash
file=$1
if [ $# -eq 0 ];then
   echo "输入一个值"
   exit
fi
if [ -f $file ];then
   echo "文件"
elif [ -s $file ];then
   echo "套接文件"
elif [ -d $file ];then
   echo "目录"
else
   echo "未知"
fi

3、除了传参还能用与用户交互方式往脚本中传输
read
1、read:从你输入的值中读取一个值
[root@localhost gsf]# read name age
gsf 20
name就是gsf了,age就是20
2、可以传入一组数据
[root@localhost gsf]# read -a name
aaa vvv bbb ccc
[root@localhost gsf]# echo ${name[1]}   看"第1个"参数
vvv
[root@localhost gsf]# echo ${name
  • }   看所有参数
    aaa vvv bbb ccc
    [root@localhost gsf]# echo ${#name[3]}  看第三个字符长度
    3

    eg:写一个脚本比较任意2个数字的大小。test5要求考虑字符串

    循环语句:
    1、for循环
        循环:将循环体循环执行0、1或者多次
        格式:
      for 循环条件:do
           循环体
      done

        for循环关键是要生成一个循环列表
        for i in (1..10)
             seq 1 10:生成1到10的列表
             seq 1 2 10:生成基数列
             seq 0 2 10:生成偶数列
        for  i in $[seq 1 10]

    注意:
    一、continue和break
    1、continue:结束本轮循环开始下一轮循环
    2、break:直接终止循环
    二、循环中的运算
    let:循环里里用let同样可以实现运算效果(只能实现整数的运算)

    while循环:
    1.格式
        while 条件:do
                 循环体
        done
    a.进入while循环:当条件成立的时候进入循环
    b.退出while循环:当条件不成立的时候退出循环

    2、死循环
    格式
       while true; do  ---该格式表示死循环
           循环体
           if语句
           break
           fi
      done

  • 分享至 : QQ空间
    收藏

    0 个回复

    您需要登录后才可以回帖 登录 | 立即注册