shell编程 - 变量赋值与使用/here文档

本文介绍了如何使用Bash脚本创建一个简单的HTML页面来显示系统信息报告。内容包括设置变量以提高代码复用,利用here文档嵌入HTML内容以及日期和时间的处理。示例脚本展示了如何将系统变量如hostname和当前时间集成到输出中,提高脚本的动态性。
摘要由CSDN通过智能技术生成
  • 初始项目

    #!/bin/bash
    
    # Program to output a system information page
    
    echo "<html>"
    echo "    <head>"
    echo "        <title>page title</title>"
    echo "    </head>"
    echo "    <body>"
    echo "        page body"
    echo "    </body>"
    echo "</html>"

    一个带引号的字符串可以包含换行符,因此可以包含多个文本行,shell将持续读取文本,直到读取到下一个引号为止。(命令行中也是如此工作的,换行时以>开头,该字符定义在PS2变量中)
    也因此,以上脚本等效果于

    #!/bin/bash
    
    # Program to output a system information page
    
    echo "<html>
                <head>
                        <title>page title</title>
                </head>
                <body>
                        page body
                </body>
          </html>"
  •  加入一些描述信息

    #!/bin/bash
    
    # Program to output a system information page
    
    echo "<html>
        <head>
            <title>SYSTEM INFORMATION REPORT</title>
        </head>
        <body>
            <h1>SYSTEM INFORMATION REPORT</h1>
        </body>
    </html>"

    上述脚本中,可以看到有两处展示文本SYSTEM INFORMATION REPORT,当脚本中多处含有相同信息时,可以提取出来以变量的形式声明定义和使用,这样修改维护时即可一处修改即可。如下:
     

    #!/bin/bash
    
    # Program to output a system information page
    
    TITLE="SYSTEM INFORMATION REPORT"
    echo "<html>
        <head>
            <title>$TITLE</title>
        </head>
        <body>
            <h1>$TITLE</h1>
        </body>
    </html>"

    shell中变量的命名规则:
    变量名称由字母、下划线和数字组成;
    变量名称必须以字母和下划线开头;
    变量名称中不允许有空格和标点。
    常量和变量的区别:
    没有区别,常量只是有确定值的变量,一般不做修改操作,一旦定义值就不在变化,本质上还是变量。
    shell中约定成俗的是用大写字母表示常量,使用小写字母表示变量

  • 变量赋值和使用


    variable=value
    在赋值时,变量名等号和值之间不能含有空格
    a=5 b="a string"
    可以在一行中给多个变量赋值,空格隔开

    变量使用 $variable 进行变量扩展。当变量名因为上下文变得不明确时候,可以用花括号{}把变量名括起来进行扩展。
     

    #!/bin/bash
    
    # Program to output a system information page
    
    TITLE="SYSTEM INFORMATION REPORT FOR $HOSTNAME"
    CURRENT_TIME=$(date +"%x %r %Z")
    TIME_STAMP="Generated $CURRENT_TIME,by $USER"
    
    echo "<html>
        <head>
            <title>$TITLE</title>
        </head>
        <body>
            <h1>$TITLE</h1>
            <p>$TIME_STAMP</p>
        </body>
    </html>"
  • here文档


    here文档是IO重定向的另外一种形式,在脚本中嵌入正文文本,输入到一个命令的标准输入中
    格式:
    command << token
    text
    token
     command是可以接收标准输入的任意命令,token用来指示嵌入文档的开始和结束,text为文档内容。
    使用here文档修改脚本如下
    #!/bin/bash
    
    # Program to output a system information page
    
    TITLE="SYSTEM INFORMATION REPORT FOR $HOSTNAME"
    CURRENT_TIME=$(date +"%x %r %Z")
    TIME_STAMP="Generated $CURRENT_TIME,by $USER"
    
    cat << _EOF_
    <html>
        <head>
            <title>$TITLE</title>
        </head>
        <body>
            <h1>$TITLE</h1>
            <p>$TIME_STAMP</p>
        </body>
    </html>
    _EOF_
    

    here文档优点:
    使得文档中的单引号和双引号失去在shell中的特殊含义;

    #!/bin/bash
    age=18
    cat << _EOF_
    "$age"
    '$age'
    \$age
    _EOF_


    可以和接受标准输入的任意命令结合使用;
    “<<”修改成“<<-”后,可以忽略here文档中开头的tab字符,从而可以进行缩进编辑,增强可读性。


    可以关注作者微信公众号,追踪更多有价值的内容!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值