• Linux之shell脚本编程


    1 使用多命令
    在shell下,可以分步执行:
    cd
    ls

    在shell下,也可以连续执行:
    cd;ls

    说明:上述2种方法 完全等价


    2 使用shell脚本 的 方法
    自定义1个文件script01.sh
    使用vi 进行编辑,内容为:
    cd
    ls

    3 运行脚本的方法
    sh script01.sh

    注意:如果script01.sh不在当前目录下,则需要制定 目录,如可以进行如下操作
    sh ../script01.sh


    4 在shell下,不能直接进行 四则运算
      windows的cmd下,也不能
      
      在shell下,运行Linux下的计算器后,就可以了
      在windows下,运行calc计算器,也就可以了
      
    5 在shell下,使用bc计算器
    bc  -q                //运行bc计算器,-q参数 代表 不需要显示bc版本信息----此时,自动打开了1个子进程,子进程名为 bc
    scale=2                //修改 小数点位数为 2
    a=10.1                //定义1个变量a,并赋值为10.1
    b=20.1
    c=a+b                //可以进行四则运算,并将结果赋值给c
    print a                //bc下,输出变量的值方法----------shell下,则使用echo进行变量的输出
    quit                //退出bc计算器----子进程bc将结束
    返回到父进程shell下


    6  在shell脚本里,使用bc计算器
       注意:windows里,你无法将windows带的计算器 放进 什么windows shell里
       
    vi script02.sh
    内容如下:
    #!/bin/bash            //告诉调用者,如下内容符合 bash shell脚本语法-----调用者执行该脚本后,将打开1个新的进程(进程名为 sh 或 script02.sh)
    a=10                //下面都是在新的进程里执行的shell命令
    b=20
    c=`bc< $a+$b                //反单引号中的内容,都是 子进程bc下的命令
    EOF
    `                    //子进程bc 要结束了。将返回到sh进程
    echo c is $c          //在sh进程里,执行的命令
       
       
    7 反引号的用法
        注意1:脚本中,如果要使用bc,则必须使用 反引号
        注意2:还有其它 应用场合
               date1=`date +%y%m%d`
               touch log.$date1            //则新建立的文件名 可能为  log.140415

       
       
       
    7 bash shell的if语句

    7.1 数值比较

    编写if001.sh脚本,内容如下:
    #!/bin/bash
    echo please input your age:
    read age                        //同过键盘,输入数值给 age年龄
    if [ $age -gt  20  ]            //这是整型数的比较----float double string不能这么用----age是变量,前面要加$------不能用大于号,这是新语法
    then                            //注意 中括号2头的空格
        echo your age \> 20            //加反斜杠,是因为 shell语法中,大于号是 输出重定向命令
    else
        echo your age \<= 20        //要加反斜杠
    fi
    exit 0   

    注意点:必须进行整数值间的比较,否则有错误提示。  []内有空格,需注意

    数值比较的运算符:            
    -eq
    -ne

    -ge
    -gt

    -lt
    -le


    7.2 字符串比较
    题目:判断姓名是否为 lisi
    #!/bin/bash
    echo please input your name:
    read name
    if [ $name =  "lisi"  ]
    then
        echo your name is lisi
    else
        echo your name is not lisi
    fi
    exit 0

    字符串比较的运算符: 
    \>
    \<
    =
    !=
    -z
    -n

    注意点:字符串变量 未初始化、为空时,如果进行比较,是十分危险的。所以,先要进行 -z比较 


    7.3 文件的比较  ----Linux shell所擅长的
    题目:判断在当前目录下,是否存在一个目录文件 dir1
    #!/bin/bash
    name_dir=dir1
    if [ -d $name_dir  ]
    then
        echo have the dir
    else
        echo not have the dir
    fi
    exit 0


    文件比较的运算符:  
    -d         是否存在,并且是1个目录
    -f        是否存在,并且是1个文件
    -e        是否存在
    -s        是否存在,并且不为空
    -r        是否存在,并且可读
    -w        是否存在,并且可写
    -x        是否存在,并且可执行
    -O        是否存在,并且被当前用户所拥有
    -G        是否存在,并且默认组是当前组

    file1 -nt file2                file1 比 file2 新----注意:前提是文件要存在
    file1 -ot file2                file1 比 file2 旧----注意:前提是文件要存在

  • 相关阅读:
    如何将vscode和Linux远程链接:
    F.binary_cross_entropy、nn.BCELoss、nn.BCEWithLogitsLoss与F.kl_div函数详细解读
    SSM基于微信小程序的实验室安全管理系统毕业设计-附源码031527
    手把手教你入门Python中的Web开发框架,干货满满!!
    DusQ1 CPG 500/1000
    【ARM入门】ARM、SOC、ARM授权 概念篇
    【EKF】EKF原理
    kafka在windows下单机版搭建
    Azure Data Factory(八)数据集验证之服务主体(Service Principal)
    路由和node环境搭建
  • 原文地址:https://blog.csdn.net/qq_38220914/article/details/127711982