shell脚本详解

        通俗来讲shell脚本就是把shell命令放在一个“脚本”中,脚本的第一行#!/bin/bash

意思为这个脚本指定一款在/bin/下名叫bash的shell解释器,来解释接下来的任何命令,如果我们的系统用的是其他解释器就要将/bin/bash改为其他名字。

一:变量

        shell脚本是一种弱类型语言,在脚本中使用变量不需要也无法指定变量的“类型‘。默认情况下shell脚本的变量都是字符串。

(1)变量的定义和赋值

        变量名=”字符串“

要注意的是赋值号的两边没有空格!在shell脚本中,任何时候要给变量赋值,赋值号两边都一定不能有空格。

变量名只能包含英文字母和数字,且不能以数字开头

(2)变量的引用

        $变量名

在引用变量获取里面的值时在变量前加美元符号即可

(3)变量的种类

 shell脚本中变量分为三类:普通用户自定义的变量、系统预定义的环境变量、命令行变量

系统预定义的环境变量:可以使用env命令来查看

命令行变量:指的是在脚本内部使用用户从命令行传递进来的参数

        $#:代表命令行参数的个数

        $*:代表所有参数

        $@:同上

        $n:第n个参数

        $?:最后一个命令执行之后的返回值,常用来判断命令是否执行成功

        $$:代表当前进程号的PID

但是事实上变量前的$符号只是对变量的引用,真正的主体是$后面紧跟着的#、*、@、n、?、$

二:特殊符号

shell脚本中有几种特殊符号分别是引号,竖杠(管道),大于号小于号(重定向)

(1)引号

引号有三种,他们是双引号、单引号、反引号

双引号是将一些单词括起来形成一个值,在双引号中也可以用变量的引用

单引号是其内部的所有成分都视为普通的字符

反引号的作用就是在双引号中标识出shell命令

(2)管道

简单的举个例子

        find 查找路径 -name 文件名 -not -path "排除的路径" -type f | xargs grep "要查找的字符串" -rn

        以上命令解释为:在排除路径外的查找路径中寻找所有匹配文件名的文件其类型为普通文件将其结果通过管道排列成一行作为grep命令查找的文件输入,结果加行号打印

(3)大于号>和小于号< 重定向

        例子

        echo "hello world" >1.log

该命令会将hello world输出到1.log文件中

三:测试语句

test命令专门用来实现所谓的测试语句

        语句                                                           含义                                       说明

test -e file                                         判断文件file是否存在             成立返回0,否则返回1(下同)

test -r file                                          判断文件是否可读

test -w file                                         判断文件是否可写

test -x file                                          判断文件是否可执行

test -d file                                          判断文件是否是目录

test -f file                                           判断文件是否是普通文件

test -s file                                          判断文件是否非空

test s1 = s2                                       判断字符串s1和s2是否相等

test s1 != s2                                      判断字符串s1和s2是否不同

test s1 < s2                                       判断字符串s1是否小于s2

test s1 > s2                                       判断字符串s1是否大于s2

test -n s                                             判断字符串s长度是否非0

test -z s                                             判断字符串s长度是否为0

test n1 -eq n2                                    判断数值n1是否等于n2

test n1 -ne n2                                    判断数值n1是否不等于n2

test n1 -gt n2                                     判断数值n1是否大于n2

test n1 -ge n2                                    判断数值n1是否大于或等于n2

test n1 -lt n2                                      判断数值n1是否小于n2

test n1 -le n2                                     判断数值n1是否小于或等于n2

test常用中括号[]代替,但要求[]两边必须有空格

四:脚本语法单元

(1)分支控制

if 条件

then

        执行语句

elif 条件

then

        执行语句

else

        执行语句

fi

会C语言的自行理解,不会接放弃吧

分支语句的语法要点有三处

        1:每个if语句都有一个fi作为结束标记

        2:分支语句中使用then作为起始语句

        3:有且仅当if后面的结果为真(0)时,then语句才会被执行

case $1 in

        1) echo 1

                ;;

        2)echo 2

                ;;

esac

case自行理解

(二)循环控制

        shell脚本有三种可用的循环结构,他们分别是while循环,until循环,和for循环

while 条件

do

        语句

done

满足条件即循环执行do下的语句,done结束

until 条件

do

        语句

done

满足条件则退出,否则执行do下的语句

for 变量 in 字符串

do

        语句

done

字符串有几个单词就循环几次,变量的值每次循环都是字符串中的不同单词依次取值。

五:函数

函数名 ()

{

        执行语句

        return 0

}

函数名定义遵循c规则,括号中不能用参数,调用时$n来表示第n个参数,$?代表函数调用的返回值

命令杂记:

        local:定义函数的局部变量

        unset:删除已定义的

        read:接受标准输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值