Shell 学习

Shell编程

shell :弱类型、 解释型语言

解释器:bash

一、变量

bash的变量类型:

      环境变量

      本地变量(局部变量)

      位置变量

      特殊变量:bash内置的用来保存某些特殊数据的变量。(也叫系统变量)

本地变量:只属于某一个bash的变量。

      var_name=值

      作用域:整个bash进程

局部变量:

      local var_name =值,   

      作用域:当前代码段。

环境变量:

      export 名字=值

      作用域:当前的shell和其子shell。

注意:脚本在执行时都会启动一个子shell进程:

      命令行中启动的脚本会继承当前shell环境变量。

      系统自动启动脚本(非命令行启动):则需要自我定义环境变量。

位置变量: 用于 脚本执行的参数,$1 表示第一个参数,以此类推

      $1,$2….

特殊变量:

    $?  上一个命令的执行状态返回值。

    $#  传递到脚本的参数个数

    $*   传递到脚本的参数,与位置变量不同,此选项参数可超过9个

    $$  脚本运行时当前进程的ID号,常用作临时变量的后缀,如 haison.$$

    $!  后台运行的(&)最后一个进程的ID号

    $@  与$#相同,使用时加引号,并在引号中返回参数个数

    $-   上一个命令的最后一个参数

    $?  最后命令的退出状态,0表示没有错误,其他任何值表明有错误

 

程序有两类返回值:

1、         执行结果

2、         执行状态,$? : 0:表示正确,1-255:错误

输出重定向:

    >  覆盖重定向

    >>  追加重定向

    2>   错误覆盖重定向

    2>>  错误追加重定向

    &>   全部重定向

撤销变量:

      unset  变量名

 

查看shell中变量:

set  命令

查看shell中的环境变量

printenv

env

export

引用变量:${变量名},一般可以省略{}

     

单引号:强引用,不作变量替换

双引号:弱引用,做变量替换

反引号:``命令替换

 

二、脚本

 

条件判断:

      条件表达式:

1、          [  expression  ]

2、         test expression

     整数比较:

           -eq :  比如:[ $A –eq  $B ]

           -ne , -gt ,-lt,-ge,-le

命令的逻辑关系:

      在linux 中 命令执行状态:0 为真,其他为假

     

      逻辑与: &&

           第一个条件为假时,第二条件不用再判断,最终结果已经有;

           第一个条件为真时,第二条件必须得判断;

      逻辑或: ||

      逻辑非: !

      命令执行的状态  的逻辑关系

1、如果用户user6不存在则添加用户6

! id user6 && useradd user6

Id user6  ||  useradd user6

 

备注:

passwd默认是要用终端作为标准输入,加上--stdin表示可以用任意文件做标准输入
于是这里用管道作为标准输入

 

条件判断,控制结构:

 

      If  条件 ;then

               语句

      elif  条件 ; then

          语句

      else

               语句

          fi

 

-a : 逻辑与,并且 :  if  [ $# -gt 1 –a  $# -lt 3 –o $#  -eq 2 ] ; then

-o :或者    

 

bash  -n  shell文件 :检查文件是否有语法错误。

bash –x shell 文件 :debug 执行文件

 

Shell 中如何算术运算

1、         let  算术运算表达式

let  C=$A + $B

2、$[算术表达式]

     C  = $[$A+$B]

3、$((算术表达式))

      C=$(($A+$B))

3、         expr  算术表达式  ,注意:表达式中各操作数及运算符之间要有空格。而且要使用命令引用

C=`expr $A + $B`

 

exit  : 退出脚本

      退出脚本可以指定脚本执行的状态:exit 0 。

复习:

      测试方法:

           [  表达式  ]

                     [[  表达式  ]]

           test  表达式

         INT1=33

      INT2=32

      [  $INT1  -eq  $INT2  ]

      [[  $INT1  -eq  $INT2 ]]

      test $INT1  -eq  $INT2

文件测试: [ ]  需要中括号

-e  FILE :测试文件是否存在

-f  FILE :测试文件是否为普通文件

-d FILE :测试文件是否为目录

-r   权限

-w   

-x

特殊变量:

$#  $@

字符串测试:

== 等号两端需要空格

!=

-n   string : 判断字符串是否为空

-s  string : 判断字符串是否不空

 

循环:进入条件,退出条件

for  变量  in 列表 ; do

语句

done

比如:  for  I  in 1  2 3 4 5 ;do

                  语句

           done、

如何生成列表:

      1、{1..100}

      2、seq  [起始数]   [跨度数]  结束数

      3、ls  /etc 文件列表

 

While 循环

格式一

while 条件;do

语句

[break]

done

格式二 死循环

while true

do

    语句

done

格式三 死循环

while :

do

    语句

done

格式四 死循环

while [ 1 ]

do

    语句

done

格式五 死循环

while [ 0 ]

do

    语句

done

 

 

case 语句

case  变量  in

value1)

语句

;;

value2)

   语句

;;

*)

  语句

;;

esac

posted @   一剑侵心  阅读(215)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示