Linux 中使用 Shell 脚本的快速教程:抛硬币应用程序
简而言之,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 脚本。