shell脚本

什么是shell脚本?

一系列shell命令的有序集合叫做shell脚本。

shell脚本是解释型语言,解释型语言不需要编译,可以直接执行,如果报错也会执行

一、shell脚本的创建和使用

1.创建以 .sh 为后缀的脚本文件

  以test.sh为例

2.写一段shell命令:echo "Morning Sir!"

3.执行文件(两种办法)

3.1.用解释器bash  test.sh

 3.2通过chmod修改文件权限,然后./ 需要执行的shell脚本执行文件,

注意:该方法需要在开头加上#!/bin/bash     告诉系统./运行时使用哪个解释器(这一句话不能写错)

二、变量

1.用户自定义变量

  • 在shell脚本中,只有一种数据类型叫字符串
  • 变量不需要定义,可以直接使用
  • 给变量赋值时需要注意:(1)等号两边不能有空格
  •                                         (2)123,'123',"123"是相同的
  • 如果想要使用变量里面的值,需要在变量名前加$符号
  • 如果需要在"  "中使用变量的值,如果变量是数字,需要把变量名放在[  ]中,如果是字符,需要放在{  }
  • '  '中无法使用变量的值
  • 如果不想使用变量里的值时,可以用unset将变量的值清空

2.位置变量

$0--$9

位置变量,表示命令行参数

$0   命令行第0个参数

$1   命令行第1个参数

3.预定义变量

$#        :打印除了文件名以外命令行参数的个数

$@/$*  :打印所有的除了文件名

$?        :上一条语句的执行结果,0为真,非0为假

$$        :进程号

4.环境变量

env  查看所有的环境变量

$HOME  表示家目录的路径

$PATH 表示编译器路径

三、语句

1.解释性语句:#  注释

2.功能性语句:read、test

read:从终端上读取内容到变量中

read  变量1 变量2 ...

注意:换行(回车)是结束输入的标志,每个输入之间以空格隔开

参数:

-p:  加入提示信息    read -p "input the num"  var1  var2

-t:   限制输入时间,时间内不输入则停止  read -t  5  var1  var2

-n:   限制输入的个数 (空格也包括在内)     read -n 5 var1 var2

-s:   隐藏输入的内容   read -s var1 var2

test

test能比较的内容为:

字符串  整型  文件

1、字符串

test    字符串1  =  字符串    (等号两边加空格)   判断字符串是否相等

test    字符串1  !=  字符串      判断字符串是否不等

test    -z    字符串    测试字符串长度是否为0

test    -n    字符串    测试字符串长度是否不为0   

2、整型

-eq        判断是否相等

-ne        判断是否不等 

-gt         大于关系

-lt          小于关系

-ge        大于等于

-le          小于等于

3.文件

-r        文件可读

-w        文件可写

-x        文件可执行

-e        文件存在

-s        文件存在且有内容

-f        文件为普通文件

-d        文件为目录文件

-L        文件为链接文件

-c        文件为字符设备文件

-b        文件为块设备文件

-p        文件为管道文件

f1   -nt    f2       文件1比文件2新

f1   -ot     f2        文件1比文件2旧

expr

expr后面可以跟算术运算

val = expr  1 + 2

特殊的是乘法,需要在*前面加一个\转义,也就是\*

val= expr 1 \* 2

val=

3.控制语句

if  表达式

then         需要执行的语句

fi

表达式有两种方式:(1)test  -e  文件名

                                 (2)[ -e 文件名 ]     注意: [   ]方括号内部需要有空格隔开

case  $变量名 in

        1)

                代码

                ;;

        2)

                代码

                ;;

        *)

                代码

                ;;

esac

      

while

while  表达式

do

        代码

done

while ture  :死循环

如果想让变量自+1

可以写成了let  val++;

1.         for   i    in      单词表   //   for i   in  ({1..10})

            do

                        代码

            done

2.        for((i=0;i<10;i++))

           do

                   代码    

           done

3.        for  i   in `seq 5`   (i从1执行到5)

           do

                    代码

            done

break和continue

break:跳出循环

continue:跳过本次循环,继续执行下一次循环

break  n         跳出n层循环

continue  n        n层

函数

func ()

{

        代码

}

如果要调用func函数,那么函数的定义一定写在调用之前

如果函数需要参数,则可以用函数名  $  变量名        的形式传参数,

函数内部用$1    $2 ...来访问参数的值

函数可以有返回值,可以在调用函数的下一条语句用$?来查询

调用函数时直接写函数名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值