shell脚本

1、Shell是一个用C语言编写的程序,即是一种命令语言,又是一种程序设计语言

2、Shell脚本是一种shell命令编写的脚本程序,接下来关注的是Bash(易用开源)

3、#! 是一个约定的标记,表示的是系统的脚本使用的是哪种解释器来执行

      echo 命令是用于向窗口输出文本

4、运行Shell脚本有两种方法:

      作为可执行程序:首先应该cd到相应的目录

              chmod  +x  ./text.sh     是脚本具有执行权限

               ./test.sh       执行脚本

       作为解释器参数:参数就是shell脚本的文件名

               /bin/sh   test.sh

5、Shell变量

      定义变量时,变量名不加$符号(PHP中的变量才需要加$)

      注意:变量名和等号之间不能有空格;

      直接赋值:user_name=“zhangsan”

      语句给变量赋值:for file in 'ls /etc' 或者是 for file in $(ls /etc)  将etc下的文件夹的名称循环出来赋值给file

6、使用变量

      直接在变量前边加$符号即可,可以是$user_name或者是${user_name},加{}的好处就是可以帮助识别变量的边界,例如${skill}Script和$skillScript

       已经定义过的变量,可以重新被定义

7、只读变量(readonly):这种变量的值是不能被修改的,例如:readonly user_name,只能读,不能重新定义

8、删除变量(unset):unset命令不能删除只读变量,其他变量删除后不能再次使用

9、变量的类型:

      局部变量:在脚本中或者命令中定义,仅在当前的实例中有效,其他的shell启动的程序不能访问

      环境变量:所有的程序,包括shell启动的程序,都能访问环境变量。有些程序需要环境变量来保证其正常运行

      shell变量:可以是局部变量可以是环境变量,保证了shell的正常运行

10、shell字符串:字符串可以是单引号双引号和不加引号

        单引号字符串的限制:单引号里的任何字符都会原样输出,单引号中的变量是无效的;单引号中不能出现单引号(用转移符后也不行)

        双引号的优点:双引号里可以有变量;双引号了可以出现转义字符

11、拼接字符串:get1="hello,"$your_name" !" 或者是 get2="hello,${user_name} !"

12、获取字符串的长度:${#user_name}

13、提取字符串:${user_name:1:4}

14、查找子字符串:查找字符串i或者o的位置(哪个字母先出现就计算哪个)

        string="runoob is a great site"

        echo `expr index "$string" io`  输出4,是从1开始数的

15、Shell数组:支持一维数组,不支持多维的,但是长度没有限定,数组下边从0开始

        语法:数组名=(value1 value2 value3 value4),中间用空格隔开

16、读取数组:${数组名[下标]}

        获取数组中所有的元素:${数组名[@]}

17、获取数组的长度:

        获取数组元素的个数:${#数组名[@]}  或者 ${#数组名[*]}

        获取数组单个元素的长度:${#数组名[n]}

18、Shell注释:以#开头的就是注释,

        多行注释包括,:<<EOF EOF      :<<'  '         :<<!  !

19、Shell传递参数:在执行shell脚本时,向脚本传递参数,脚本内获取的参数的格式为$n,n代表1,2,3.....,1为执行的第一个参数,2为执行的第二个参数。$0为执行的文件名

       以下是特殊字符用来处理参数:

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

                $*   以一个单字符串显示所有向脚本传递的参数,如果$*用「"」括起来,以$1 $2 $3..$n的形式输出所有参数

                $$   脚本运行的当前进程ID号

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

                $@  与$*相同,但是使用时加引号,并在引号中返回每个参数,如$@用「"」括起来,以“$1”“¥2”...“$n”的形式输出

                $-    显示shell使用的当前选项,与set命令功能相同

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

20、Shell基本运算符

       例如:expr 是一款表达式计算工具,可以完成表达式的求值操作

       `expr 2 + 2`  求2+2等于多少,注意使用的是反引号

        同时需要注意的是:表达式和运算符之间要有空格;完整的表达式需要被`` 包含;

        算数运算符:+  ,  -   , *   , /   , %  ,  ==  ,  != ;

               需要注意的是*前边必须加\才能实现乘法运算;if...then...fi是条件语句;在MAC中Shell的expr语法是$((表达式))其中的*不需要转义符号\

       关系运算符:只支持数字,不支持字符串,除非字符串的值是数字,结果都是布尔型的

              -eq    检测两个数是否相等,相等返回true

              -ne   检测两个数是否不相等,不相等返回true

               -gt   检测左边的数是否大于右边的,如果是返回true

                -lt   检测左边的数是否小于右边的,如果是返回true

                -ge   检测左边的数是否大于等于右边的,如果是返回true

                 -le   检测左边的数是否小于等于右边的,如果是返回true

        布尔运算符:!(非运算,表达式为true返回false)  ,  -o(或运算,有一个表达式为true返回true)  ,-a(与运算,两个表达式都为true才返回true) 

        逻辑运算符:&&(逻辑的and),||(逻辑的or)

        字符串运算符:=(检测两个字符串是否相等),!=(检测两个字符串是否相等,不相等返回true),-z(检测字符串长度是否为0,为0返回true),-n(检测字符串长度是否为0,不为0返回true),str(检测字符串是否为空,不为空返回true) 

        文件测试运算符:用于检测Unix文件的各种属性

               -b file: 检测文件是否是快设备文件,如果是返回true

               -c file: 检测文件是否是字符设备文件,如果是返回true

               -d file: 检测文件是否是目录,如果是,返回true 

               -f  file: 检测文件是否是普通文件(既不是目录也不是设备文件),如果是返回true

               -g file:检测文件是否设置来了SGID位,如果是返回true

               -k file:检测文件是否设置了粘着位(Sticky Bit),如果是返回true

               -p file:检测文件是否是有名管道,如果是返回true

               -u file:检测文件是否设置了SUID位,如果是返回true

               -r file:检测文件是否可读,如果是返回true

               -w file:检测文件是否可写,如果是返回true

               -x file:检测文件是否可执行,如果是返回true

               -s file:检测文件是否为空(文件大小是否大于0),不为空返回true

               -e file:检测文件(包括目录)是否存在,如果是返回true

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值