Linux笔记--5 --- shell脚本

2014-07-16
          Shell脚本
Shell脚本是一个包含一系列命令序列的文本文件。当运行这个脚本文件时,文件中包含的
命令序列将得到执行。


        语法
1,  Shell脚本的第一行必须是如下格式: 
    #!/bin/sh
    符号 #! 用来指定该脚本文件的解析程序。在上面的例子中使用 /bin/sh 来解析该脚本。
当编辑好脚本后,如果要执行该脚本,还必须使其具有可执行属性。
    chmod +x filename
(也可以用 命令 : sh filename 执行)


2,  在进行 shell 编程时,以 # 开头的句子表示注释,直到这一行的结束。    


3, 在 shell 编程中, 所有的变量都由字符串组成,并且不需要预先对变量进行声明。
    例:   #!/bin/sh
           #set variable a
           a="hello world"            
           #print a
           echo "A is:"
           echo $a
     注意:变量赋值时, “=”左右两边都不能有空格。
           BASH中的语句结尾不需要分号。


    3.1 有时候变量名很容易与其他文字混淆。例:
     num=2
     echo "this is the $numnd"
     执行结果是:输出 :this is the 
     原因:shell 会去搜索变量 numnd 的值,但是这个变量是没有值的。
     可以用花括号来告诉shell我们要打印的是num变量
     echo "this is the ${num}nd"
     这将打印: this is the 2nd


     3.2 默认变量
      
$# : 传入脚本的命令行参数个数
$* : 所有命令行参数值,在各个参数值之间留有空格
$0 : 命令本身 (shell文件名)
$1 : 第一个命令行参数
$2 : 第二个命令行参数
  
     3.3 局部变量
     在变量首次被赋值时加上 local 关键字可以声明一个局部变量。例:
     #!/bin/bash
     hello="var1"
     echo $hello
     function func1 {
         local hello="var2"
         echo $hello
      }
     func1
     echo $hello
     注意:func1 后面的花括号前要有个空格
     输出:var1
           var2
           var1


4,if 语句
   4.1 if[ expression ]
       then
           #code block
       fi
   
   4.2  if[ expression ]
        then
            #code block
        else
            #code block
        fi
   
   4.3 if [expression ]
       then
           #code block
       else if[ expression ]
            then
                #code block
            else
                #code block
            fi
        fi


    4.4 if [ expression ];then
           #code block
        elif [ expression ]
           then
               #code block
           else
               #code block
           fi
         fi


5, 比较
      比较操作  整数操作  字符串操作
      相同       -eq          =
      不同       -ne          !=
      大于       -gt          >
      小于       -lt          <
      大于或等于 -ge
      小于或等于 -le
      为空       -z
      不为空     -n
例:
1,比较整数a和b是否相等:     if [ $a = $b ] (也可用 eq )
2,判断整数a是否大于整数b:   if [ $a -gt $b]
3,比较字符串a和b是否相等:   if [ $a = $b ]
4,判断字符串 a 是否为空:    if [ -z $a ]


注意:
1,在 "["和"]"符号的左右都留有空格
2. “=”左右都有空格


6,判断
      -e  文件已经存在
      -f  文件是普通文件
      -s  文件大小不为零
      -d  文件是一个目录
      -r  文件对当前用户可以读取
      -w  文件对当前用户可以写入
      -x  文件对当前用户可以执行
例:
      #!/bin/sh
      folder=/home
      [ -r "$folder" ] && echo "Can read $folder"
      [ -f "$folder" ] || echo "this is not file"


7,For 循环
 for循环结构与 C 语言中有所不同, 在 BASH 中 for 循环的基本结构是:
      for var in [list]
      do 
         #code block
      done
 其中 $var 是循环控制变量,[list]是var需要遍历的一个集合,do/done对
 包含了循环体,相当于 C 语言中的一对大括号。另外如果  do 和 for 被写在同一行,
 必须在 do 前面加上 ";" 。
      如: for $var in [list];do
例1:
      #!/bin/bash
      for day in Sun Mon Tue Wed Thu Fri Sat
      do 
          echo $day
      done
例2: 如果列表被包含在一对双引号中,则被认为是一个元素:
      #!/bin/bash
      for day in "Sun Mon Tue Wed Thu Fri Sat"
      do 
          echo $day
      done


注意: 在for所在那行,变量 day 是没有加 "$"符号的,而在循环体内, echo 所在行变量
      $day 是必须加上 “$”符号的。


8, while 循环
   while 循环的基本结构是:
   while [ condition ]
   do 
        #code block
   done


9, until 循环
   until 循环的基本结构是:
   until [ condition ]
   do 
       #code block
   done
 
   while 和 until 的区别在于 while 是为真时执行, until是为假时执行。 
   
10,Case语句
    BASH 中的 case 结构与 C 语言中的 switch 语句的功能比较类似,可以用于进行
    多项分支控制。
 
    case "$var" in
       condition1 )
         ;;
       condition2 )
         ;;
       * )
          default statments;;
    esac


例:
        #!/bin/bash
        echo "Hit a key, then hit return."
        read Keypress
        case "$Keypress" in
         [A-Z]) echo "Uppercase letter";;
         [a-z]) echo "Lowercase letter";;
         [0-9]) echo "Digit";;
         *)echo "Punctuation, whitespace, or other";;
        esac



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值