linux脚本编程基础篇

Linux脚本编写基础
    在Linux的管理当中,我们有时候总要做一些重复的工作,或者有的工作需要大量的步骤,有时候会记不住,我们可不可以有一种工具可以帮我们来进行工作呢,我们就可以使用脚本,脚本说的简单点就是命令的集合,把我们要使用的命令写进脚本,每次使用的时候只需运行脚本就行了,我们以后也可以查看我们所进行的配置,为我们的工作提供方便和提高效率。

一、语法基本介绍:

    脚本的开头以下面的开始
    #!/bin/bash
    #!后边告诉我们执行该文件的程序,也就是我们要使用的shell,我这里用bash
    注释:
    有的时候我们的脚本可能长时间不使用,或者贡献出来方便大家,我们可能忘了脚本是做什么工作的,别人也可能不会了解脚本的具体功能,我们可以在脚本里加入说明,也就是注释,这就用到
   #:这个符号,在脚本中以#开头的都是注释掉的句子,在脚本中是不会执行的
   一个好的脚本,建议大家使用注释

二、变量
    一个脚本中,我们可能要多次使用同一个值或命令,我们就可以使用变量
    变量的类型:
   
    局部变量
    局部变量只对当前shell有效
   
    环境变量
    对当前shell和子shell均有效,一般仅仅在登录的脚本中使用
   
    特殊变量
    $? 引用上一条命令的结果返回值
    0:成功
    1~255:失败  1,2,127 系统预留 其余的可自定义

    位置变量
    用于引用脚本后面传递过来的参数 $1,$2.....

    变量的声明
    变量名=内容
   
    变量命名:
    1、 只能包含字母、数字和下划线,并不能以数字开头
    2、 不能与关键字冲突
 
    引号:
    ‘’ 单引号完全引用其中的内容
      ``   反引号,命令引用,引用命令的结果
    “” 双引号中进行变量的替换,变量赋值中依然可以有变量

    变量的引用:
    脚本中变量的引用:
    $变量名

三、函数:
    变量可以帮助我们引用一个值,有时候我们在一个脚本中也可能会使用重复的一段命令,我们就可以通过定义函数来实现
函数就是脚本中的功能模块
    Bash函数的定义:
    bash中定义函数:
 function FUNC_NAME {
 body
 }
 
 FUNC_NAME(){
 body;
 }
 
 函数的返回值:
         默认为函数调用时最后一个命令的状态返回值
 
 自定义函数返回值
 return  NUM
     
     函数还能够接受参数
举例:
#!/bin/bash
#创建变量compare
compare () {
#$1表示传递过来的参数,大于2,就将10当做函数的返回值,否则就将20当做函数的返回值
     If [ $1 -gt 2 ];then
     Return 10
     Else
     Return 20
     Fi
}
#将3当做参数传递给函数中的$1,
compare 3
N=$?
if [ $N -eq 10 ];then
Echo "greater than 2"
else
  Echo "less than or equal to 2"
fi
#最后结果显示greater than 2

四、脚本的流程控制:
    通过流程控制,来得到我们想要的结果,流程控制简单就是条件的判断
1、 条件命令测试
   条件测试 [ experssion ]
            [ A -a B ]  A与B
            [ A -o B ]  A或B 
   !  表示取结果的反值
   文件测试  
        [-e file] 测试文件是否存在
         -f     测试文件是不是普通文件   
         -d     测试是不是目录
         -r     当前用户对文件是否有读权限 
         -w     当前用户对文件是否有写权限       
         -x     当前用户对文件是否有执行权限   
   整数比较 双目操作,NUM 操作符 NUM
      [2 -eq 3]  
         -eq:等于 
         -gt:大于
         -lt:小于
         -ge:大于等于
         -le:小于等于
         -ne::不等于
   字符比较格式和整数比较相同,单操作符就是就是我们使用的运算符号,字符比较的大小根据ASCII码。
   字符串操作符,[[ ]]   >,<,>=,<=,!=,==/=。
        [ 2  =  2 ]
   字符转测试,还有单目测试
        [ -z "字符串" ] 测试字符串是否为空,空为真
        [ -n "字符串" ] 与 -z 相反,不空为真
2、if:
   if   条件; then
       命令
   elif 条件 ; then
       命令
   else
        命令
   fi
    从字面我们就可以明白,如果条件为真,就执行下面的命令,如果有多个判断可以使用elif,当第一次判断为假,就执行下面的判断,else表示否则,当所有判断都为假的时候执行的命令,else不需要的可以省去。
举例:
#!/bin/bash
if  [ 2 -lt 3 ];then   
   echo “2”    
else              
   echo "3"      
fi                 
   这个脚本就是如果2小于3,就将2显示出来,否则就显示3,明显的最后显示的是2
3、 case
case :表达式可以用来匹配一个的字符串,而不是数字。
    case ... in
...) 
    命令  ;;  (千万不要忘了双引号)
...)
   命令 ;;
esac
举例:
#!bin/bash
read -p "command:" A
case $A in
Q|q)
   echo "quit";; 
*)
   echo "$A";;
esac
    read -p 命令用来实现与用户的交互,将用户输入的值赋值给变量A;当变量A为Q或q时就显示quit,若为其他字符,就显示出字符本身
4、for循环
查看一个字符串列表,然后列表中的字符依次赋值给一个变量,然后执行命令,直到值被匹配结束
for  var  in   字符表 ;do
        命令
done
字符表含多个字符,用空格隔开,字符表可以写成集合{0..9},表示0-9,{a..z}表示a-z。
举例:
用for循环计算出100个数的和
#!/bin/bash
#定义一个整形变量为0
Declare -i SUM=0
#使用for循环,将1-100的数一次复制给变量i
for i in {1..100};do
#算数运算
SUN=$[$SUM+$I]
done
#显示出100个数的和为5050
echo “$SUM”
5、while循环
   while 条件;do
          命令
    done
While命令的意思就是,当满足条件的时候就执行下面的命令
举例:使用while计算100个数的和
#!/bin/bash
#定义一个整形变量为SUM=0,N=0
declare -i SUM=0
declare -i N=0
#使用while 循环,当N小于等于100就执行
while [ $N -le 100 ];do
#将变量SUM和N的和重新赋值给变量SUN
   SUM=$[$SUM+$N]
#N每次加一 
  let N++
done 
#显示结果
echo “$SUM”   
6、until循环
   until 条件;do
         命令
   done
   until命令和while正好相反,执行命令,直到命令的结果满足条件就停止
举例:使用until计算100个数的和
#!/bin/bash
#定义一个整形变量为SUM=0,N=0
declare -i SUM=0
declare -i N=0
#使用until 循环,当N大于100循环就结束
until [ $N -gt 100 ];do
#将变量SUM和N的和重新赋值给变量SUN
   SUM=$[$SUM+$N]
#N每次加一 
  let N++
done 
#显示结果
    echo “$SUM”
7、关键字break,continue
   b reak: 表示直接跳出循环
   continue:表示不执行下面的命令跳出循环,直接执行下一次命令
 举例:
   #!/bin/bash
   #定义一个整形变量为SUM=0,N=0
d eclare -i SUM=0
declare -i N=0
While true;do
#将变量SUM和N的和重新赋值给变量SUN
   SUM=$[$SUM+$N]
#如果N的值小于等于100,就本身加一
if [ $N -le 100 ];do
  let N++
#结束这次循环
  continue
else
#否则,当N大于100的时候,脚本结束
  break
fi
Done
#显示结果
echo “$SUM”
8、嵌套使用
   有时候if,case等单独使用并不能满足我们的哪个,我们可以根据需求进行嵌套使用

五、算数运算:
      let VAR_NAME=2+3   将运算的值赋给变量
      $[2+3],$((2+3))常用方法,赋值给变量使用echo回显
      let VAR_NAME=2+3   将运算的值赋给变量
      N=$[$N+1] 相当于let  N++   每次加一
      N=$[$N- 1]       let  N --    每次减一
      N=$[$N+$I]      let $N+=$I   两个变量相加
      N=$[$N-$I]      let $N―=$I   两个变量相减
      N=$[$N*$I]      let $N*=$I   两个变量相乘
      N=$[$N%$I]      let $N%=$I   两个变量相除
      expr 2 + 3        命令引用使用,一定注意中间的空格

六、 脚本的运行
脚本的权限默认是没有执行权限的,要想运行脚本有两种方式
1. #bash 脚本名
2. 为脚本添加执行权限
      #chmod +x 脚本名
      在脚本当前目录下执行
      #./脚本名

你可能感兴趣的:(shell,脚本,脚本编程)