• Shell编程入门(再版)(在)


    简单的演示样本Shell规划

    演示样例1.

    #!/bin/bash
    #This is to show what a shell script looks like
    echo "Our first example"
    echo # This inserts an empty line in output.
    echo "We are currently in the following directory."
    /bin/pwd
    echo
    echo "This directory contains the following files"
    /bin/ls -l .

    演示样例2.

    #!/bin/bash
    # Auto mail for system info
    
    /bin/date +%F >> /tmp/sysinfo
    echo >> /tmp/sysinfo
    
    echo "Disk info:" >> /tmp/sysinfo
    /bin/df -h >> /tmp/sysinfo
    echo >> /tmp/sysinfo
    
    echo "Online users:" >> /tmp/sysinfo
    /usr/bin/who | /bin/grep -v root >> /tmp/sysinfo
    echo >> /tmp/sysinfo
    
    echo "Memory info:" >> /tmp/sysinfo
    /usr/bin/free -m >> /tmp/sysinfo
    echo >> /tmp/sysinfo
    
    # Write to root 
    /usr/bin/write root < /tmp/sysinfo && /bin/rm -f /tmp/sysinfo
    
    # crontab -e
    # 0 9 * * 1-5 ./sysinfo.sh




    Shell结构

    1#。指定运行脚本的Shell

    2#凝视行。描写叙述该脚本的作用,负责人等信息

    3、命令和控制结构

    创建shell程序的步骤

    第一步:创建一个包括命令和控制结构的文件。

     

    第二步:改动这个文件的权限使它能够运行: chmod u+x 

    第三步:运行 ./example 或 sh example 或 . sysinfo.sh

      

    Shell变量

    变量:shell传递数据的一种方法,用来代表每一个取值的符号名。 

    Shell有两类变量:暂时变量永久变量

    暂时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其他程序不可见。包括:用户自己定义变量、位置变量。

    永久变量是环境变量,其值不随shell脚本的运行结束而消失。

    1、用户自己定义变量

    用户定义的变量由字母或下划线开头,由字母、数字或下划线序列组成,区分大写和小写。

    变量名长度没有限制。在使用变量值,要在变量名前加上前缀“$”

     

    2、设置和使用变量

    设置变量:习惯上用大写字母来命名变量。变量名仅仅能以字母表中的字符开头,不能用数字。 

    变量赋值:=”两边没有空格。 

    定义时赋值,NUM=1 

    将一个命令的运行结果赋给变量,:TIME=`date`;TIME=$(date +%F)

    将一个变量的值赋给还有一个变量,:B=120 ; A =$B 

    使用echo命令查看变量值。比如:echo $A 

     

    3、包括多个字的变量

    NAME=Mike Ron #运行时出错,应改为:

    NAME=“Mike Ron” 或 $NAME=‘Mike Ron’ 

    4、单引號与双引號的差别

    比方:定义DATE=$(date +%F)

    time=”time is $DATE”

    echo $time

    time='time is $DATE'

    echo $time

     

    单引號之间的内容原封不动地指定给了变量。 

    5 set查看系统中定义的全部变量

    unset删除所定义的变量

    6、位置变量

    Shell解释运行用户命令时,将命令行的第一个部分作为命令名,其他部分作为參数。

    由出如今命令行上的位置确定的參数称为位置參数。 

    比如

    ls -l file1 file2 file3 

    $0 这个程序的文件名称 ls -l 

    $n 这个程序的第n个參数值,n=1~9 

    7、特殊变量

    $* 这个程序的全部參数 

    $# 这个程序的參数个数 

    $$ 这个程序的PID 

    $! 运行上一个后台命令的PID 

    $? 运行上一个命令的返回值

     

    演示样例-autobak.sh

    #!/bin/bash
    # backup files by date
    
    DATE=$(/bin/date +%Y%m%d)
    /bin/tar -cf /backup/$1.$DATE.tar $1 > /dev/null 2>> /backup/$1.bak.log
    /bin/gzip  /backup/$1.$DATE.tar
    
    if [ $? -eq 0 ] 
    then
        echo "$1 $DATE backup successfully" >> /backup/$1.bak.log
    else
        echo "ERROR: failure $1 $DATE backup" >> /bakup/$1.bak.log
    fi
    
    # crontable -e
    # 0 3 * * 2,5 script

    演示样例-special.sh

    #!/bin/bash
    # A test script for special var
    
    echo '$# is' $#
    echo '$* is' $*
    echo '$0 is' $0
    echo '$? is' $?
    echo '$$ is' $$
    echo '$2 is' $2

    Shell命令

    1read命令[交互方式]

    read USERNAME

    演示样例-read.sh

    #!/bin/bash
    # A test script for read
    
    read first second third
    
    echo "Your first parameter is $first"
    echo "Your second parameter is $second"
    echo "Your third parameter is $third"

    #sh -x 命令:单步调试显示运行

     

    2expr命令,对整型变量进行运算

    如: expr 3 + 5  #”+”号之间须有空格

    expr $var1 - 5 

    expr $var1 / $var2 

    expr $var3 * 10  #”*”号须要转义符””

     

    复杂的运算

    expr `expr 5 + 7`/$var4

     

    将运算结果赋予变量

    var4=` expr $var1 / $var2 ` 

    演示样例-expr.sh

    #!/bin/bash
    # A test for expr
    
    a=10
    b=20
    c=30
    
    val1=$(expr $a + $b + $c)
    echo "The value of val1 is $val1"
    val2=$(expr $c / $b)
    echo "The value of val2 is $val2"
    val3=`expr $a * $b`
    echo "The value of val3 is $val3"
    val4=`expr $a + $c / $b`
    echo 'The value of $a + $c / $b is ' $val4


    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    Arthas(阿尔萨斯)学习记录
    Apache Flume 学习记录
    XA 协议 学习记录
    Federation(联邦) 架构
    服务注册与发现 Consul Consultemplate
    稳态&敏态
    分布式事务 方案对比
    TongWeb
    tensorflow学习011——Dropout抑制过拟合
    tensorflow学习014——tf.data运用实例
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4823303.html
Copyright © 2020-2023  润新知