Linux 中使用 Shell 脚本的快速教程:抛硬币应用程序

作者:Nawaz Abbasi

简而言之,Shell 脚本是由 UNIX/Linux shell 运行的程序。它是一个包含一系列命令的文件,这些命令按顺序执行,就像在命令行界面 (CLI) 或终端中输入一样。

在这个关于 Shell 脚本的快速教程中,我们将编写一个简单的程序来抛硬币。 基本上,我们程序的输出应该是正面 (HEADS) 或反面 (TAILS)(当然,是随机的)。

首先,shell 脚本的第一行应该指示使用哪个解释器/shell 来执行该脚本。 在本教程中,我们将使用 /bin/bash,它将表示为 #!/bin/bash,这被称为 *shebang!*

接下来,我们将使用一个内部 Bash 函数 - 一个名为 RANDOM 的 shell 变量。它返回一个范围在 0-32767 中的随机(实际上是伪随机)整数。我们将使用这个变量来获得 2 个随机值——0(代表正面)或 1(代表反面)。这将通过 shell 中使用 %(取模运算符,返回余数)的简单算术运算来完成,$((RANDOM%2)),这将存储在一个名为 Result 的变量中。 因此,我们程序的第二行变为 Result=$((RANDOM%2)) – 请注意,在 shell 脚本中为变量赋值时,=(赋值运算符)周围不应有空格。

最后,我们只需要在 Result 变量中,如果得到 0 则打印 HEADS,如果得到 1 则打印 TAILS。 也许你现在已经猜到了,我们将为此使用 if 条件语句。 在这些条件中,我们将比较 Result 变量的值与 0 和 1; 并相应地打印 HEADS 或 TAILS。 为此,整数比较运算符 -eq(等于)用于检查两个操作数的值是否相等。

因此,我们的 shell 脚本如下所示

 

#!/bin/bash
Result=$((RANDOM%2))
if [[ ${Result} -eq 0 ]]; then
    echo HEADS
elif [[ ${Result} -eq 1 ]]; then
    echo TAILS
fi

 

假设我们将脚本命名为 *cointoss.sh* – 请注意,.sh 只是为了使用户可以识别该文件/脚本是 shell 脚本。并且,Linux 是一个无扩展名系统。

最后,要运行该脚本,我们需要使其可执行,这可以使用 chmod 命令来完成 – chmod +x cointoss.sh

一些脚本执行示例

 

$ ./cointoss.sh

TAILS

$ ./cointoss.sh

HEADS

$ ./cointoss.sh

HEADS

$ ./cointoss.sh

TAILS

 

 

总而言之,在这个关于编写 shell 脚本的快速教程中,我们了解了 *shebang、RANDOM*、变量赋值、使用取模运算符 % 的算术运算、if 条件语句、整数比较运算符 -eq 以及执行 shell 脚本。

Nawaz 是一个 Linux CLI 爱好者,喜欢分享与命令行和 shell 脚本相关的技巧和教程。可以通过 LinkedIn 联系他。

加载 Disqus 评论