• Linux操作系统使用及C高级编程-D6-D8Linux shell脚本


    利用shell命令写的脚本文件,后缀是.sh

    shell脚本是一个解释型语言,不需要编译,可直接执行

    书写:vi test.sh

    #!/bin/bash:说明使用的是/bin目录下的bash

    说明完后即可编写脚本文件

    bash test.sh:运行文件

    source test.sh:运行文件

    ./test.sh:运行文件

    注意下图报错,因为没有执行权限,可使用chmod修改权限直接777最高权限

    脚本变量

    存放系统和用户需要使用的特定参数(值)

    变量名:使用固定名称,由系统预设用户定义

    变量值:能够根据用户设置、系统环境的变化而变化

    自定义变量

    在终端定义一个变量COUNT,并进行取出使用$

            

    也可在代码中使用,特别注意=两端无空格,注释是#

      

    若不想用此变量了,可看到在右图中最后打印出空格

    取值

    双引号:允许通过$符号引用其他变量值

            弱引用,其中的变量应用会被替换为变量值

    单引用:进制引用其他变量值,$是为普通字符

            强引用,其中的变量引用不会被替换为变量值,而保持源字符串

    反撇号:命令替换,提取命令执行后的输出结果,"和$(...)作用相同"

    11反撇号:给其他变量赋值(反撇号是`),12相同功能

     ​​​​​​​​​​​​​​

    数组

     

     

    包含第二个元素,再往后一共打印3个元素

     只读变量

    不可更改,不可删除

     位置变量和预定义变量

    注意:$#统计参数个数,其中的./test2.sh未参与到统计中

     环境变量

    Shell语句

     ​​​​​​​打印提示

    ​​​​​​​​​​​​​​​​​​​​​​​​​​​​

     执行三秒,若未输入就退出:​​​​​​​​​​​​​​

     输入不显示

     ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

     这里就是需要特备注意空格在哪里​​​​​​​​​​​​​​​​​​​​​,一个是等号两端没有,一个是+两端都有

     ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

     

    在使用-n -z时,有时候结果正确,有时候错误,11最好加上""这样能特别明确的知道要取的是val1值,7行同样也是

     ​​​​​​​​​​​​​​​​​​​​​

     

     

     分支语句、循环语句

    分支语句

     test命令也可使用[]代替,并且注意[]里两边都有空格

     判断用户是否存在,如果存在,打印存在,如果不存在,打印不存在

            使用到grep语句查找grep "^linux:" /etc/passwd,此时只查找到第一个linux

            所以判断用户存不存在,就是统计是否打印了,结合管道wc -l判断打印了几行

     而当要是想要输入y也是可以的话,也可以如6行这样:

     或的操作是:-o,下面表示大于100,小于0

    与:-a

    非:!

    也可以这样:

    29行 *)表示剩余情况

     循环语句

     使用for循环挨个打印当前文件​​​​​​​

    打印输入参数

    $*和$@都表示所有的参数,区别是,$*加上双引号后是作为一个整体进行一次性打印,而$@还是想上面那样进行打印

    C语言方式使用for循环

     

    使用while循环打印0~4

     当然同样使用c语言方式也可以

     

     ​​​​​​​

     Shell函数

     

    5行的$1是获取10行的linux输入

     

    加了local就是局部变量,否则函数体内部的都是全局变量

     

     而若是使用了命令置换的方式,全局变量val就无法使用了,这里需要注意

     

  • 相关阅读:
    《Java并发编程的艺术》读书笔记 - 第九章 - Java中的线程池
    AQS之排斥锁分析
    学习尚硅谷HTML+CSS总结
    无mac电脑获取app的公钥的方法
    常用的shell命令
    Db2 license
    Windwos安装配置Jdk8时报计算机中丢失api-ms-win-crt-runtime-|1-1.0.dll
    JAVA基础(四十二)——集合之Collection
    微服务开发,这10个点你要知道
    【区块链 | solidity】智能合约Gas 优化的几个技术
  • 原文地址:https://blog.csdn.net/zhaojiazb/article/details/134409592