当前位置 : 主页 > 编程语言 > 其它开发 >

羽夏 Bash 简明教程(上)

来源:互联网 收集:自由互联 发布时间:2022-05-14
羽夏 Bash 简明教程上部分,详细介绍了 Bash 中的变量、数学运算、算术运算、用户输入获取、条件判断的知识。 写在前面   该文章根据 the unix workbench 中的 Bash Programming 进行汉化处理
羽夏 Bash 简明教程上部分,详细介绍了 Bash 中的变量、数学运算、算术运算、用户输入获取、条件判断的知识。 写在前面

  该文章根据 the unix workbench 中的 Bash Programming 进行汉化处理并作出自己的整理,并参考 Bash 脚本教程 和 BashPitfalls 相关内容进行补充修正。一是我对 Bash 的学习记录,二是对大家学习 Bash 有更好的帮助。如对该博文有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我。本篇博文可能比较冗长,请耐心阅读和学习。

Bash 简介

  Bash 是 Unix 系统和 Linux 系统的一种 Shell(命令行环境),是目前绝大多数 Linux 发行版的默认 Shell。Shell 是一个程序,提供一个与用户对话的环境。这个环境只有一个命令提示符,让用户从键盘输入命令,所以又称为命令行环境。Shell 接收到用户输入的命令,将命令送入操作系统执行,并将结果返回给用户。其次,Shell 是一个命令解释器,解释用户输入的命令。它支持变量、条件判断、循环操作等语法,所以用户可以用 Shell 命令写出各种小程序,又称为脚本,这个也是本篇重点讲解的部分。

开发环境

  既然学的是 Bash ,那么必然是任何 Linux 发行版。至于用什么编辑器都可以。不过我个人建议使用VSCode + Bash Extension Pack进行学习,因为它有纠错功能,并指出一些不合适的写法,我也会在本篇末也会介绍一些。我羽夏使用的就是我建议使用的工具,我也默认你使用的是它,如果用其他的自己酌情参考。下面开始进入正题:

入门

  好,在阳光明媚、微风和煦(bushi)的一天,我们信心满满的开始了 Bash 的学习旅程。熟练的打开 VSCode ,进入 Bash 工作区,然后新建了一个名字叫math.sh的干净纯洁的文件,然后输入了以下内容:

#!/bin/bash
# File: math.sh

  注意,你不要复制和粘贴这些行到文件中,尽管你应该准确地输入我输入的的内容。写代码时你应该尽可能多地自己练习,因为写代码是一个实践性十分强的项目,不能眼高手低。这两行都以#开头,在 Bash 编程语言中,在#之后键入的任何内容都将被忽略(除非位于花括号之间,但这仅在非常特定的情况下)。#允许你在代码中进行注释,以便以后的你理解你当下写的代码,也可以使其他人更快地知道你的程序是如何设计的。
  但是,上面的内容的第一行代码具有特殊的含义,虽然它是注释。该行被称为 Shebang 行。脚本的第一行通常是指定解释器,即这个脚本必须通过什么解释器执行,而这一行以#!字符开头,正如上面展示的。
  #!后面就是脚本解释器的位置,Bash 脚本的解释器一般是/bin/sh/bin/bash

#!/bin/sh

  或者

#!/bin/bash

  #!与脚本解释器之间有没有空格,都是可以的。如果 Bash 解释器不放在目录/bin,脚本就无法执行了。为了保险,可以写成下面这样。

#!/usr/bin/env bash

  上面命令使用env命令,这个命令总是在/usr/bin目录),返回 Bash 可执行文件的位置,从而避免了这个问题。
  Shebang 行不是必需的,但是建议加上这行。如果缺少该行,就需要手动将脚本传给解释器。举例来说,脚本是script.sh,有 Shebang 行的时候,可以直接调用执行。

wingsummer@wingsummer-PC ~ → ./script.sh

  上面例子中,script.sh是脚本文件名。脚本通常使用.sh后缀名,不过这不是必需的。如果没有 Shebang 行,就只能手动将脚本传给解释器来执行。

wingsummer@wingsummer-PC ~ → /bin/sh ./script.sh

  或者

wingsummer@wingsummer-PC ~ → bash ./script.sh

  注意,“只要指定了 Shebang 行的脚本,可以直接执行”这句话有个前提条件,就是脚本需要有执行权限,否则这行也是没作用的。

数学运算 内容讲解

  Bash 编程语言可以完成非常基本的算法,现在你在 VSCode 打开了math.sh这个文件,我们开始输入下面内容:

#!/usr/bin/env bash
# File: math.sh

expr 5 + 2
expr 5 - 2
expr 5 \* 2
expr 5 / 2

  保存,并在终端去执行它,你将会得到如下结果:

7
3
10
2

  让我们分析一下刚才创建的 Bash 脚本中发生了什么。Bash 按照从文件的第一行到最后一行的顺序执行程序。expr命令可用于计算 Bash 表达式。表达式只是一个有效的 Bash 代码字符串,在运行时会生成一个结果。您已经熟悉的加法(+)、减法(-)和乘法(*)的算术运算符的工作方式与您预期的一样。请注意:在进行乘法运算时,需要转义星号字符,否则 Bash 会认为您正在尝试创建正则表达式。由于5 / 2 = 2.5,除法运算符(/)的工作方式与预期不同。Bash 进行整数除法,这意味着一个数除以另一个数的结果总是向下舍入到最接近的整数。让我们看一下命令行上的几个示例:

expr 1 / 3
expr 10 / 3
expr 40 / 21
expr 40 / 20

  另一个你可能不熟悉的数值运算符是模运算符(%)。模运算符返回整数除法后的余数。在整数除法中,如果A / B = CA % B = D,那么B * C + D = A。让我们看看命令行上的一些示例:

expr 1 % 3
expr 10 % 3
expr 40 % 21
expr 40 % 20

  然后是它的执行结果:

1
1
19
0

  注意,当一个数完全可被另一个数整除时,模的结果为零。如果你想做更复杂的数学运算,比如分数和小数,那么我强烈建议将echo和名为bc的台式计算器程序结合起来。打开一个名为bigmath.sh的新文件并输入以下内容:

#!/usr/bin/env bash
# File: bigmath.sh

echo "22 / 7" | bc -l
echo "4.2 * 9.15" | bc -l
echo "(6.5 / 0.5) + (6 * 2.2)" | bc -l

  如下是计算结果:

3.14285714285714285714
38.430
26.20000000000000000000

  为了在计算中使用十进制数,可以使用-l标志将任何数学字符串传输到bc

内容小结
  • Bash 程序从文件的第一行到最后一行按顺序执行。
  • #后面写的任何东西都是注释,Bash 不会执行。
  • 可以使用expr命令执行简单的算术运算。
  • 通过使用echo将字符串表达式传输到bc中,执行更复杂的数学运算。
小试牛刀
  1. 请使用命令行查看bc的帮助手册。
  2. bc交互控制台进行一些数运算。
  3. 在一个文件中写一些等式,然后将该文件作为参数提供给bc
上一篇: drools session理解
下一篇:没有了
网友评论