• Linux系统学习笔记之 1 一个简单的shell程序


    不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊。

    一个简单的shell程序

    shell结构
    1、#!指定执行脚本的shell
    2、#注释行
    3、命令和控制结构
    创建shell程序的步骤
    第一步:创建一个包含命令和控制结构的文件
    第二步:修改这个文件的权限使它可以执行。
    使用chmod u+x
    第三步:执行shell
    sh /test/example.sh
     
    Shell变量
    变量:是shell传递数据的一种方法,用来代表每个取值的符号名
    shell有两类变量:临时变量和永久变量
    临时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括
     
    用户自定义变量、位置变量。永久变量是环境变量,其值不随shell脚本的执行结束而消失。
     
     
    用户自定义变量
    用户定义的变量有字母或下划线开头,由字母,数字或下划线序列组成,并且大小写字母意义不
     
    同,永久变量长度没有限制。
    在使用变量值时,要在变量名前加上前缀“$”
     
     
    设置和使用变量
    设置变量:习惯上用大写字母来命名变量,变量名只能以字母表中的字符开头,不能用数字。
    变量赋值:赋值号"="两边应没有空格
    定时赋值,NUM=1
    将一个命令的执行结果赋给变量,如:TIME=`date`
    将一个变量赋给另一个变量,如:A=$B
    使用echo 命令查看变量值。例如:echo $A
    列出所有变量:
    set
    包含多个字的变量
    $NAME=Mike Ron
    运行时出错,应该为:
    $NAME="Mike Ron"或$NAME='Mike Ron'
    单引号和双引号的区别是,单引号里的变量不会被解析。
    删除变量:
    unset NAME
     
    位置变量和特殊变量
    shell解释执行用户命令时,将命令行的第一个部分作为命令名,其他部分作为参数。由出现在
     
    命令行上的位置确定的
    参数称为位置参数。
    例如:
    ls -l file1 file2 file3
    $0这个程序的文件名ls -l
    $n这个程序的第n个参数值,n=1--9
     
    特殊变量
    $*这个程序的所有参数
    $#这个程序参数的个数
    $$这个程序的PID
    $!执行上一个后台命令的PID
    $?执行上一个命令的返回值 0代表成功   非0代表不成功
     
     
    shell命令
    read命令:从键盘读入数据,赋给变量
    如:red USERNAME
    read的例子:
    #!/bin/sh
    read first second third
    echo "您输入的第一个参数$first"
    echo "您输入的第一个参数$second"
    echo "您输入的第一个参数$third"
     
    expr命令
    shell变量的算术运算
    expr命令:对整数型变量进行算术运算
    例如:
    expr 3 + 5   #加号左右必须有空格
    expr $varl - 5
    expr $v1 / $v2
    expr $v1 * 10
    复杂的expr命令
    复杂的运算 
    expr ` expr 5 + 7 ` / $var1
    将运算结果赋予变量:
    var4=` expr $va1 / $var2 `
    例:
    #!/bin/sh
    a=10
    b=20
    c=30
    v1=`expr $a + $b + $c`
    echo $v1
    v2=`expr $c / $b`
    echo $v2
    v3=`$a * $b`
    v4=`expr $a + $c / $b`
    echo $v4
     
    变量测试语句
    变量测试语句:用户测试变量是否相等、是否为空、文件类型等
    格式:
    test 测试条件
    测试范围:整数、字符串、文件
    字符串测试:
    test str1=str2     测试字符串是否相等
    test str1!=str2    测试字符串是否不相等
    test str1    测试字符串是否不为空
    test -n str1       测试字符串是否不为空
    test -z str1       测试字符串是否为空
    整数测试:
    test init1 -eq int2  测试整数是否相等
    test init1 -ge int2  测试int1是否>=int2
    test init1 -gt int2  测试int1是否>int2
    test init1 -le int2  测试int1是否<=int2
    test init1 -lt int2  测试int1是否<int2
    test init1 -ne int2  测试整数是否不相等
    文件测试
    test -d  file   指定文件是否目录
    test -f  file   指定文件是否常规文件
    test -x  file   指定文件是否可执行
    test -r  file   指定文件是否可读
    test -w  file   指定文件是否可写
    test -a  file   指定文件是否存在
    test -s  file   指定文件是否非0
    变量测试语句一般不单独使用,一般作为if语句的测试条件,如:
    if test -d $1 then
    .....
    fi
    变量测试语句可用[]进行简化,如
    test -d $1 等价于[-d $1]
     
     
     
     
     
     
    #!/bin/sh
    #比较两个字符串是否相等的程序
    read -p "请输入第一个字符串:" str1
    read -p "请输入第二个字符串:" str2 
     
    if [ -n $str1 ] ; then
    echo "您输入的第一个字符串不为空,值为:" $str1
    else
    echo "您输入的第一个字符串为空"
    fi
     
    if [ -n $str2 ] ; then
    echo "您输入的第二个字符串不为空,值为:" $str2
    else
    echo "您输入的第二个字符串为空"
    fi
     
    if test $str1 = $str2 ; then
    echo "两个字符串相等"
    else
    echo "两个字符串不相等"
    fi
     
     
    1、查看当前系统的环境变量和自己定义的变量
    set命令
    2、删除一个变量
    unset 变量名
    例如:unset NAME
    ——在青春的路上,我们与你携手共进!
  • 相关阅读:
    Numpy 里线性代数函数
    lateral view 使用方法
    Numpy 基础函数
    Numpy 基础操作
    pandas 基础操作记录学习
    pandas向左移动非空单元格
    供应商自动记账
    SAP Smartforms 参数配置
    SAP FPM 相关包 APB_FPM_CORE
    SAP BPC 清除CUBE 中的数据
  • 原文地址:https://www.cnblogs.com/sajanray/p/4478774.html
Copyright © 2020-2023  润新知