脚本-shell



一、

1、Shell是什么

   Shell是一个命令行的解释器,随内核一起启动,用来解释linux下的命令传输给计算机,是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为程序设计语言,定义了各种变量与参数,并提供了许多高阶语言所具有的控制结构,包括循环与分支。

写脚本不需要编译,直接添加可执行X命令。

   Shell提供了操作系统与人之间的通讯方式,可以是交互方式(从键盘输入,并且立即响应)【阻塞】,或以shell script(非交互)方式执行。


2、程序基础:

第一步:#/bin/shbas

                #!告诉系统后面的参数用来执行该文件的程序

第二步:要使脚本可执行,修改权限

        chmod  +x  filname

第三步:通过输入:./filename 来执行



3、变量:变量名=值  

   取出变量值可以加一个美元符号$在变量前面;

   变量赋值时,不加空格,无分号

例:#/bin/sh

      a=hello world

      echo A is :”

      echo  $a

②在编辑器输入以上内容,然后保存文件HelloWorld之后执行

  chmod  +x  HelloWorld

③输入 ./HelloWorld 执行该脚本

有时变量名很容易与其他名字混淆,需添加{}来告诉shell

例:echo  this  is  the  ${num}nd



4、默认变量

$#:传入脚本的命令行参数个数;

$*:所有命令行参数值,各参数间留有空格;

$0:命令本身;

$1:第一个命令行参数;

$2:第二个命令行参数;

例:#  ./ s2  12  sf  bsn 77

       命令$0  参数$1 $2 $3 $4


5、局部变量与全局变量(看定义位置)


二、shell语句

1if语句

单分支:If [ expression ]

        then

            #code block

        fi

双分支:If [ expression ]

        then

            #code block

        else

            #code block

        fi

多分支:If [ expression ]

        then

        else if [ expression ]

           then

               #code block

           else

               #code block

            fi

         fi

 

比较操作     整数操作    字符串操作

  相同         -eq          =

  不同         -ne          !=

  大于         -gt          >

  小于         -lt           <

大于或等于     -ge         

小于或等于     -le

  为空         -z

 不为空        -n

 

注意:在[”和“]”两边都留有空格;在“=”两边都有空格;

例:

#!/bin/bash

a=$1

b=$2

if [ -z $a ] || [ -z $b ]

then

    echo "please enter 2 no"

    exit 1

fi

if [ $a -eq $b ] ; then

    echo "number a = number b"

else if [ $a -gt $b ]

    then

        echo "number a>number b"

    elif [ $a -lt $b ]

        then

            echo "number a<number b"

    fi

fi

 

-e:文件已存在     -s:文件大小不为0  -r:读   -x:执行

-f:文件是普通类型 -d:文件是一个目录 -w:写

例:

#!/bin/sh

folder=/home

[ -r "$folder" ] && echo "Can read $folder"

[ -f "$folder" ] || echo "this is not file"

 

2For语句

基本结构:

for  var  in  [list]

do

  #code  block

done

 

Var:循环控制变量,[list]var需要遍历的一个集合

do/done包含了循环体,相当于C语言中的大括号

do for 被写在同一行,必须在do前面加“;”

如:for  var  in  [list]  ;  do

注意:in后面接几个文件名,若没有双引号括起来,则一个一个输出,若有双引号,则一起输出,当成一个字符串。

例:检查当前目录有几个文件

#!/bin/bash

 

counter=0

for files in *

do

    counter=`expr $counter + 1`

done

echo "There are $counter files in `pwd` we need to process"

 

3while语句(当型循环)

while [ condition ]

do

  #code  block

Done

 

4untill语句

Untill  [ condition ]

do

  #code  block

done

whileuntill的区别在于while为真时执行,untill为假时执行。

一个命令执行成功,返回给系统0,失败返回1,;!为错误标号。

 

5case语句(开关语句)

case  $varin

condition1)

;;

condition2)

;;

*)

default  statements

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值