脚本编写基础



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






:






    脚本的开头以下面的开始



    #!/bin/bash



后边告诉我们执行该文件的程序,也就是我们要使用的shell,我这里用bash



    注释:



    有的时候我们的脚本可能长时间不使用,或者贡献出来方便大家,我们可能忘了脚本是做什么工作的,别人也可能不会了解脚本的具体功能,我们可以在脚本里加入说明,也就是注释,这就用到



:这个符号,在脚本中以#开头的都是注释掉的句子,在脚本中是不会执行的



   一个好的脚本,建议大家使用注释





二、变量



    一个脚本中,我们可能要多次使用同一个值或命令,我们就可以使用变量



    变量的类型:



   



    局部变量



shell有效



   



    环境变量



shell和子shell均有效,一般仅仅在登录的脚本中使用



   



    特殊变量



引用上一条命令的结果返回值



:成功



:失败  1,2,127 系统预留 其余的可自定义





    位置变量



$1,$2.....





    变量的声明



=内容



   



    变量命名:



    1、 只能包含字母、数字和下划线,并不能以数字开头



    2、 不能与关键字冲突



 



    引号:



    ‘’ 单引号完全引用其中的内容



反引号,命令引用,引用命令的结果



    “” 双引号中进行变量的替换,变量赋值中依然可以有变量





    变量的引用:



    脚本中变量的引用:



变量名





三、函数:



    变量可以帮助我们引用一个值,有时候我们在一个脚本中也可能会使用重复的一段命令,我们就可以通过定义函数来实现



函数就是脚本中的功能模块



函数的定义:



中定义函数:





 function FUNC_NAME {



 body



 }



 



 FUNC_NAME(){



 body;



 }



 



:



         默认为函数调用时最后一个命令的状态返回值



 



 自定义函数返回值



 return  NUM



     



     函数还能够接受参数



举例:



!/bin/bash



创建变量compare



compare () {



表示传递过来的参数,大于2,就将10当做函数的返回值,否则就将20当做函数的返回值



     If [ $1 -gt 2 ];then



     Return 10



     Else



     Return 20



     Fi



}



将3当做参数传递给函数中的$1,



compare 3



N=$?



;then



Echo "greater than 2"



else



  Echo "less than or equal to 2"



fi



最后结果显示greater than 2





四、脚本的流程控制:



    通过流程控制,来得到我们想要的结果,流程控制简单就是条件的判断



1、 条件命令测试



[ experssion ]



与B



或B 



   !  表示取结果的反值



   文件测试  



测试文件是否存在



测试文件是不是普通文件   



测试是不是目录



当前用户对文件是否有读权限 



当前用户对文件是否有写权限       



当前用户对文件是否有执行权限   



NUM 操作符 NUM



      [2 -eq 3]  



:等于 



:大于



:小于



:大于等于



:小于等于



:不等于



ASCII码。



[[ ]]   >,<,>=,<=,!=,==/=。



        [ 2  =  2 ]



   字符转测试,还有单目测试



字符串" ] 测试字符串是否为空,空为真



字符串" ] 与 -z 相反,不空为真



、if:



条件; then



       命令



条件 ; then



       命令



   else



        命令



   fi



elif,当第一次判断为假,就执行下面的判断,else表示否则,当所有判断都为假的时候执行的命令,else不需要的可以省去。



举例:
#!/bin/bash



if  [ 2 -lt 3 ];then   



“2”    



else              



   echo "3"      



fi                 



2小于3,就将2显示出来,否则就显示3,明显的最后显示的是2



、 case
case :表达式可以用来匹配一个的字符串,而不是数字。
    case ... in
...) 



    命令  ;;  (千万不要忘了双引号)



...)



;;
esac



举例:



#!bin/bash



read -p "command:" A



case $A in



Q|q)



   echo "quit";; 



*)



   echo "$A";;



esac



命令用来实现与用户的交互,将用户输入的值赋值给变量A;当变量A为Q或q时就显示quit,若为其他字符,就显示出字符本身



、for循环



查看一个字符串列表,然后列表中的字符依次赋值给一个变量,然后执行命令,直到值被匹配结束



字符表 ;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



“$SUM”



、while循环



条件;do



          命令



    done



命令的意思就是,当满足条件的时候就执行下面的命令



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]



每次加一 



  let N++



done 



显示结果



“$SUM”   



、until循环



条件;do



         命令



   done



命令和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]



每次加一 



  let N++



done 



显示结果



“$SUM”



、关键字break,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



显示结果



“$SUM”



、嵌套使用



if,case等单独使用并不能满足我们的哪个,我们可以根据需求进行嵌套使用





五、算数运算:



将运算的值赋给变量



,$((2+3))常用方法,赋值给变量使用echo回显



将运算的值赋给变量



相当于let  N++   每次加一



每次减一



两个变量相加



—=$I   两个变量相减



两个变量相乘



两个变量相除





命令引用使用,一定注意中间的空格





六、 脚本的运行



脚本的权限默认是没有执行权限的,要想运行脚本有两种方式



脚本名



2. 为脚本添加执行权限



脚本名



      在脚本当前目录下执行



脚本名


转载于:https://blog.51cto.com/7ings/906533