文章目录

  • 一:什么是shell脚本
  • 二:如何编写shell脚本
    • (1)脚本文件的格式
    • (2)可执行权限
    • (3)执行脚本
  • 三:第一个shell脚本
    • (1)基本结构
    • (2)变量和常量
      • A:创建变量和常量
      • B:变量和常量赋值的问题

一:什么是shell脚本

你可以这样理解:shell脚本是一个包含一系列的文件,shell会读取这个文件,最后执行相应命令。就好像这些命令是直接输入到命令行中一样

二:如何编写shell脚本

编写shell脚本必须明确三件事情

  1. 一个文本编辑器:shell脚本是普通文件,所以需要文本编辑器进行编辑,这个编辑最好有代码高亮,语法提示等功能
  2. 使脚本可执行:系统会执行你的脚本文件,所以必须要将脚本文件的权限设置为允许执行
  3. 将脚本放置在shell可以发现的位置

(1)脚本文件的格式

好的现在让我们编写第一个shell脚本,新建一个文件hello,该脚本文件的目的就是向屏幕输出Hello World
于是输入

#! /bin/bash
echo 'Hello World' #this is a script

就像#include一样,#! /bin/bash是用来告知操作系统用命令行解释器的名字,每一个shell脚本都应该以它作为第一行

(2)可执行权限

为了让该文件可以被执行,需要赋予执行权限。一般有两种,755表示每个人都可以执行,700表示只有脚本创建者可以执行

(3)执行脚本

好的现在让我们执行文件,还记得是如何执行C语言编译好的文件吗?

三:第一个shell脚本

好的,经过前面的叙述,想必大家对shell脚本应该有了一个简单的认识了吧。现在我来做一个案例,我们要编写一个报告生成器,用来显示系统的各种统计数据和状态,并以HTML的方式保存。这样每次运行这个脚本,它就能获取最新的系统状况了。

(1)基本结构

我认为HTML的基本格式大家都应该知道吧

<DOCTYPE html>5 <html>6 <head>7     <meta charset="utf-8">8     <title>TEST</title>9 </head>10 <body>11     can you see me?                                                                                  12 </body>13 </html>

首先我们需要将这个html文件输出到标准输出,编写脚本如下

然后运行这段程序,并将其重定向到文件info.html

接着使用火狐浏览器打开这个文件,就可以看见相应的内容了

好的继续完善如下

<DOCTYPE html>5 <html>6 <head>7     <meta charset="utf-8">8     <title>System information report</title>9 </head>10 <body>11    <h1>System information report</h1>                                                                           12 </body>13 </html>

(2)变量和常量

可以发现上面我们的脚本出现了两次System information report,类似于C语言中的宏,对于这种多次出现的如果需要修改时工作量会很大,所以我们这样做**,类似于C语言中的字符串,定义一个变量存储它,修改时只需修改变量的内容**

  1 #! /bin/bash2 3 4 mytitle="System information report" //变量                                                                                  5 echo "6 <DOCTYPE html>7 <html>8 <head>9     <meta charset="utf-8">10     <title>$title</title>11 </head>12 <body>13     <h1>$title</h1>14 </body>15 </html>16 "

A:创建变量和常量

不同于某些编程语言,shell遇见一个新的变量时,会自动创建这个变量。
比如在命令行中,为变量赋值为yes,然后使用$扩展进行查看

如果直接使用参数扩展查看一个没有命名的变量,那么这个变量将会被自动创建,并且被赋值为空值

这样会导致一些问题,比如下面testtest1两个文件,还有testtest1两个变量,他么分别赋值为test.txttest1.txt,使用cp命令将test变量的值复制给test1,如果输入正确,将达到我们的目的。但是如果故意输入错误,那么根据前面的描述,cp的第二个参数就会成为了空值

所以变量就意味着会发生变化,类似于用const修饰的变量,我们需要常量,使其值不能发生变化,发生变化就会报错
在shell中我们用大写字母表示常量,用小写字母表示变量
我们把之前的例子,修改如下,使用扩展来输出我们的主机名

  1 #! /bin/bash2 3 4 MYTTILE="System information report for $HOSTNAME" //变量                                                                                  5 echo "6 <DOCTYPE html>7 <html>8 <head>9     <meta charset="utf-8">10     <title>$TITLE</title>11 </head>12 <body>13     <h1>$TITLE</h1>14 </body>15 </html>16 "

B:变量和常量赋值的问题

shell并不关心的你的变量是什么类型的,因为它都会被当做字符串,但是要注意以下问题

在扩展期间,变量名称可以用花括号括起来,当变量名因为周遭环境而变得不明确时,就会非常有帮助
比如要使用变量的方式,将一个文件的名字由file改为file1
如果直接操作,会发现由于$name1会被当做新的变量名,而产生空值,所以使用花括号会解决这种歧义的问题

好的回归正题,我们加入一些其他信息

  1 #! /bin/bash2 3 4 MYTTILE="System information report for $HOSTNAME" 5 TIME=$(date)                                                                            5 echo "6 <DOCTYPE html>7 <html>8 <head>9     <meta charset="utf-8">10     <title>$TITLE</title>11 </head>12 <body>13     <h1>$TITLE</h1>14    <h2>time is :$TIME</h2>14 </body>15 </html>16 "

4-1:shell编程之编写第一个shell脚本相关推荐

  1. vi新建一个shell脚本_编写第一个Shell脚本

    Linux中有好多中不同的shell,bash是linux默认的shell,免费且容易使用. su切换为root权限 1.创建shell脚本 touch hello.sh 2.编辑: vi hello ...

  2. Shell编程规范与变量(shell编程规范,执行脚本文件的四种方式,管道符号与重定向,shell变量的作用于类型)

    文章目录 Shell脚本概述 Shell脚本的概念 Shell的作用 Shell编程规范 重定向与管道 Shell脚本变量 自定义变量 特殊变量 Shell脚本概述 Shell Script ,She ...

  3. pycharm中编写shell_一个shell脚本来打开pycharm软件

    ---恢复内容开始--- 本人菜鸟,学到一点点东西就很高兴....... 开始学tensorflow框架,因为比较好装tensorflow,所以把电脑系统换成了ubuntu16.04,紧接着就要选用一 ...

  4. shell编程:对话 UNIX: 更多 shell 脚本技术

    尽管在近两年使用过 UNIX 的一些人可能尝试过 shell 脚本编程,但是他们很可能只是研究操作系统的细节,并不精通 shell 脚本编程.本文针对那些希望进一步了解 shell 脚本,并开始编写更 ...

  5. 【Shell 编程基础第一部分】Shell脚本HelloShell及简单的Shell基础

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/shell/759.html ☞ 点击订阅 ☜ ...

  6. Windows Shell编程-第七章.侵入Shell

    第七章 侵入Shell 与所有其它Win32进程一样,Shell也有其自己的内存地址空间,这是其它应用完全不可知的地址空间.为了进入这个地址空间,我们必须传递一定数量的控制点,就象我们正在跨过国家边界 ...

  7. Linux Shell编程学习笔记一:shell简介

    Q:什么是Shell,什么是shell脚本? A:Shell是一种用C语言编写的程序,它是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作 ...

  8. Linux 命令行与shell编程 第10章 构建基本脚本

    本章内容 构建基本脚本 使用多个命令 创建shell脚本文件 现在我们已经介绍了Linux系统和命令行的基础知识,可以开始编程了.本章讨论编写shell脚本的基础知识.在开始编写自己的shell脚本大 ...

  9. linux与shell编程指南,LINUX与UNIX SHELL编程指南

    目      录 译者序 前言 第一部分   shell 第1章   文件安全与权限1 1.1   文件1 1.2   文件类型2 1.3   权限2 1.4   改变权限位4 1.4.1   符号模 ...

最新文章

  1. 传统数据仓库架构与Hadoop的区别
  2. 鸭鸭邀请------青龙毛毛
  3. 理解IDS的主动响应机制
  4. python猜单词游戏_磁盘空间不足。
  5. vue内引入语音播报功能
  6. 配置java编译环境
  7. 【计算机就业-银行】校招想去银行该怎么准备
  8. python元素分类_Python 练习 - 元素分类
  9. 十年,从网管到首席架构师,我的成长感悟
  10. IEEE论文模板(latex/word)
  11. ubuntu下配置nginx支持phpt(unix:/var/run/php5-fpm.sock failed (2: No such file or directory) )
  12. 卡卡通小熊win7桌面主题+非主流win7主题下载
  13. 软件安全实验——lab10(一、基于时间的侧信道攻击)
  14. android定位!每个程序员都必须掌握的8种数据结构!完整版开放下载
  15. 浏览器默认设置SameSite属性的作用
  16. memcached 详解
  17. java pdf 替换文字_itext替换pdf中的中文
  18. 图解WLAN网络拓补结构
  19. 升级iOS 15后iPhone无法连接App Store怎么办?
  20. c语言税务信息申报系统,四川税务网上申报系统下载

热门文章

  1. 薪酬最高十职位:工程师最吃香
  2. python中turtle介绍_python中turtle库的简单介绍
  3. MotifStack:多motif序列比较和可视化
  4. 你要知道的MacOS哪些优缺点
  5. jquery select css样式,css配合jquery美化 select
  6. php按照二维数组某个字段排序,PHP 二维数组根据某个字段排序
  7. python使用协程实现udp_python-socket和进程线程协程(代码展示)
  8. FreeRTOS | STM32H7串口中断调用FreeRTOS API,导致程序卡死
  9. 使用outputstream写到指定位置_MaxCompute Spark与Spark SQL对比分析及使用注意事项
  10. [1] SDK Tools安装