美文网首页
24. 启动一个项目

24. 启动一个项目

作者: 独木舟的木 | 来源:发表于2019-02-06 00:47 被阅读14次

[TOC]

编写一个报告生成器程序。它会显示系统的各种统计数据和它的状态,并将产生 HTML 格式的报告,所以我们能通过网络浏览器,比如说 Firefox 或者 Konqueror,来查看这个报告。

第一阶段:最小的文档

一个规则的 HTML 文档格式如下:

<HTML>
      <HEAD>
            <TITLE>Page Title</TITLE>
      </HEAD>
      <BODY>
            Page body.
      </BODY>
</HTML>

创建目录,并输入程序:

# 创建文件夹
$ mkdir bin

# 打开 vim 编辑器
$ vim sys_info_page

输入如下程序:

#!/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>"

保存文件,设置为可执行文件,再尝试运行:

# 755,每个人都能执行
chmod 755 ~/bin/sys_info_page

# 运行
./sys_info_page 

# 把程序的输出重定向到文件 sys_info_page.html 中
./sys_info_page > sys_info_page.html
# 通过网络浏览器查看输出结果
firefox sys_info_page.html

实际上,程序可以更简单些,合并 echo 命令:

#!/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>"

变量和常量

变量名规则:

  1. 变量名可由字母数字字符(字母和数字)和下划线字符组成。
  2. 变量名的第一个字符必须是一个字母或一个下划线。
  3. 变量名中不允许出现空格和标点符号。
  4. shell 不能辨别变量和常量;一个常用惯例是指定大写字母来表示常量,小写字母表示真正的变量。
#!/bin/bash
# Program to output a system information page
TITLE="System Information Report For $HOSTNAME"
echo "<HTML>
        <HEAD>
                <TITLE>$title</TITLE>
        </HEAD>
        <BODY>
                <H1>$title</H1>
        </BODY>
</HTML>"

给变量和常量赋值

shell 不会在乎变量值的类型;它把它们都看作是字符串。通过使用带有 -i 选项的 declare 命令,你可以强制 shell 把赋值限制为整型,但是,正如像设置变量为只读一样,极少这样做。

varible=value

⚠️ 在赋值过程中,变量名,等号和变量值之间必须没有空格。

示例:

a=z                     # Assign the string "z" to variable a.
b="a string"            # Embedded spaces must be within quotes.
c="a string and $b"     # Other expansions such as variables can be
                        # expanded into the assignment.

d=$(ls -l foo.txt)      # Results of a command.
e=$((5 * 7))            # Arithmetic expansion.
f="\t\ta string\n"      # Escape sequences such as tabs and newlines.

a=5 b="a string"        # 可以在同一行中对多个变量赋值

在参数展开过程中,变量名可能被花括号 “{}” 包围着。

#!/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>"

我们已经知道了两种不同的文本输出方法,两种方法都使用了 echo 命令。还有第三种方法,叫做 here document 或者 here script。一个 here document 是另外一种 I/O 重定向形式,我们在脚本文件中嵌入正文文本,然后把它发送给一个命令的标准输入。
在 here documents 中,单引号和双引号会失去它们在 shell 中的特殊含义。

# command 是一个可以接受标准输入的命令名。
# token 是一个用来指示嵌入文本结束的字符串。
command << token
text
token

修改示例:

#!/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_

使用 cat 命令和一个 here document。
字符串 EOF(意思是 “文件结尾”, 一个常见用法)被选作为 token,并标志着嵌入文本的结尾。注意这个 token 必须在一行中单独出现,并且文本行中没有末尾的空格。

#!/bin/bash
# Script to retrieve a file via FTP
FTP_SERVER=ftp.nl.debian.org
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom
REMOTE_FILE=debian-cd_info.tar.gz
ftp -n << _EOF_
open $FTP_SERVER
user anonymous me@linuxbox
cd $FTP_PATH
hash
get $REMOTE_FILE
bye
_EOF_
ls -l $REMOTE_FILE

如果我们把重定向操作符从 “<<” 改为 “<<-”,shell 会忽略在此 here document 中开头的 tab 字符。 这就能缩进一个 here document,从而提高脚本的可读性:

#!/bin/bash
# Script to retrieve a file via FTP
FTP_SERVER=ftp.nl.debian.org
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom
REMOTE_FILE=debian-cd_info.tar.gz
ftp -n <<- _EOF_
    open $FTP_SERVER
    user anonymous me@linuxbox
    cd $FTP_PATH
    hash
    get $REMOTE_FILE
    bye
_EOF_
ls -l $REMOTE_FILE

相关文章

  • 24. 启动一个项目

    [TOC] 编写一个报告生成器程序。它会显示系统的各种统计数据和它的状态,并将产生 HTML 格式的报告,所以我们...

  • 24.项目总结

    产品经理管项目,最重要关注什么? 进度:控进度,跟进度,保进度 资源:给兄弟姐妹们争取资源,协调资源 风险:延期变...

  • SpringBoot执行原理

    每个SpringBoot项目都有一个主程序启动类,在主程序启动类中有一个启动项目的main()方法,在该方法中通过...

  • webstorm 调试vue项目

    启动项目 debug项目 先启动项目 http://localhost:8080:启动访问的地址webpack:/...

  • SpringBoot启动过程粗略分析

    简单的springboot项目启动代码 通过下面的代码,可以启动一个springboot项目 main方法中,只有...

  • 一行命令解决搜索和删除指定文件名文件

    背景 在启动公司项目时,遇到了一个异常导致无法启动项目。项目启动时,会扫描根目录及其子目录的文件,但是 MacOS...

  • springboot - 2 创建项目

    先创建一个简单的maven项目 随便起一个项目名 添加maven依赖 创建一个启动类 创建一个请求类 启动项目,试...

  • 关于tomcat加载jar异常问题的分析

    现象描述: 项目使用springboot启动一个web项目,在启动阶段看到console中出现了异常“1.10.3...

  • 【B 端】3.产品研发

    一、工作流程:启动→规划→执行→监控→收尾 二、工作内容:一个Java项目的标准开发流程 1.项目启动会 说明项目...

  • 项目错误总结

    背景:项目使用jar包的形式启动(非tomcat启动),现项目中添加了接口监控(引用了另外的一个maven项目实现...

网友评论

      本文标题:24. 启动一个项目

      本文链接:https://www.haomeiwen.com/subject/dqivsqtx.html