Shell编程

一:了解shell

 

作为命令语言互动式地解释和执行用户输入的命令是Shell的功能之一;Shell还可以用来进行程序设计;

2:基本机构介绍

shell如果要以#!/bin/bash 开头 则 #!/bin/bash 必须放在第一行

符号"#!"用来告诉系统它后面的参数是用来执行该文件的程序(解析器),

要使脚本可执行,需要给该脚本文件赋予执行权限

chmod a+x 脚本文件 

3:脚本的调用

  1. 相对路径调用脚本:[root@study001 shell]# sh touch.sh
  2. 绝对路径调用脚本:[root@study001 /]# sh /study/shell/touch.sh

4:注释

在进行shell编程,以“#”开头的的语句直到这一行的结束表示注释

二:shell变量

    1:系统变量

    HOME:用于保存用户主目录的完整路径名

    PATH:用于保存用冒号分割的目录路径名,Shell将按PATH 变量中给出的顺序搜索这些目                 录,找到的第一个与命令名称一致的可执行文件将被执行

    UID:当前用户的UID

    PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化

2:用户自定义变量

变量名=变量值

在定义变量时,变量名前面不加符合"$",在引用该变量的时候在变量名前加"$"。在给变量赋值的时候,等号两边一定不要有空格,如果变量值本身有空格,则整个字符串都要用双引号包裹起来,在编写Shell程序时,为了变量名喝命令名相区别,建议所有的变量名都用大写字母来表示

在说明一个变量并将它设置为一个特定值后就不再改变他的值时

readonly 变量名

在任何时候创建的变量都只是当前Shell的局部变量,所有不能被Shell运行的其他命令或shell程序所利用,而export命令可以将一个局部变量提供给Shell命令使用

export 变量名

export 变量名=变量值 

3:shell 预定义变量

预定义变量和环境变量相类似,也是shell在一开始时就定义了的变量,所有的预定义变量都是由符号"$"和另一个符合组合而成的

$#:位置参数的数量 (获取所有输入参数个数 长用于循环)

$*:所有位置参数的内容 (获取所有输入参数的值 将所有的参数看成一个整体)

$@: 和$*类似 但是 $@是将每个参数区分对待

$?:命令执行后返回的状态,0:表示没有错误,非0表示有错误

$$:当前进程的进程号

$0:当前执行的进程名

$n: n代表数字,$1-$9 表示第一个到第九个参数,十个以上的参数需要用大括号包含,如 ${10}

4:$(),${},$的区别

    1:$() 与  ``(反引号)作用一样 都是执行里面的程序将结果返回

    2:$和${} 都是引用变量的 一般情况下 $和${]是没有区别的 但是用${}  会比较精确的界定变量名称的范围

三:变量表达式

1:字符串比较

    =:比较两个字符串是否相等,相等则为"是"

   !=:比较两个字符串是否相同,不同则为“是”

   -n:比较字符串的长度是否大于0,如果大于0则为“是”

   -z:比较字符串的长度是否等于0,如果等于0则为“是”

2:数字比较

    -eq:相等

    -ge:大于等于

    -le:小于等于

    -ne:不等于

    -gt:大于

    -lt:小于

3:逻辑测试

    !:与另一个逻辑值相反的逻辑值

   -a:两个逻辑值为“是”,返回值才为“是”,反之为“否”

   -o:两个逻辑值有一个为“是”,返回值就为“是”

4:文件操作比较

    -d:对象存在且为目录则返回值为“是"

    -f:对象存在且为文件则返回值为”是“

    -r:对象存在且可读则返回值为”是“

    -w:对象存在且可写则返回值为”是“

    -x:对象存在且可执行则返回值为”是“

    -s:对象存在且长度非0则返回值为”是“

   !:取测试条件的相反值

注:[ condition ] condition前后要有空格 condition为测试条件

四:shell条件判断语句

   if条件语句

    1:if-then-fi

        if [  condition ];then

              命令行;

        fi;

    2:if-then-else-fi

        if [  condition ];then

              命令行1;

         else

              命令行2;

        fi;

    3:if-then-elif-else-fi

        if [  condition ];then

             命令行1;

       elif...

            命令行2;

       else

            命令行3;

       fi;

case条件语句

     case value in

     value1)

               命令行。。。

               ;;

     value2)

             命令行。。。

            ;;

      value3)

              命令行。。。

              ;;

 。。。。。。--泛指多个

      *)--都不满足的时候执行 

               其他命令

    esac

五:shell循环语句

    for循环语句

第一种格式:

for变量 in 列表; do

循环体

done

第二种格式:

for ((变量=初始值 ; 变量范围 ; 变量变化方式)); do

循环体

done

for循环的列表生成方式:

{n..m}:通过花括号,中间是变量的遍历范围,从n到m都为变量的遍历

`seq [起始数 [步进长度]] 结束数`  `seq 1 2 10`变量的遍历值为1 3 5 7 9 超过十就退出遍历

   while循环语句

    while  条件判断

    do

        循环体

    done

练习:读取一个数据文件

   while  read Line

     do

         echo "${read}"

  do  < 数据文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值