学习一门新的编程语言可能很有趣。每当我尝试学习一门新语言时,我都会专注于定义变量、编写语句和评估表达式。一旦我对这些概念有了大致的了解,我通常可以自己弄清楚其余部分。大多数编程语言都有一些相似之处,因此一旦你掌握了一门编程语言,学习下一门语言就变成弄清楚其独特的细节并识别其中的差异。
为了帮助我练习一门新的编程语言,我喜欢编写一些测试程序。我经常编写的一个示例程序是一个简单的“猜数字”程序,计算机选择一个介于 1 到 100 之间的数字,并要求我猜数字。程序循环直到我猜对为止。
“猜数字”程序练习了编程语言中的几个概念:如何为变量赋值,如何编写语句,以及如何执行条件评估和循环。对于学习一门新的编程语言来说,这是一个很棒的实践实验。
在 Bash 中猜数字
Bash 是大多数 Linux 系统的标准 shell。除了提供丰富的命令行用户界面外,Bash 还以脚本的形式支持完整的编程语言。
如果你不熟悉 Bash,我推荐这些入门介绍
你可以通过编写一个“猜数字”游戏版本来探索 Bash。这是我的实现
#!/bin/bash
number=$(( $RANDOM % 100 + 1 ))
echo "Guess a number between 1 and 100"
guess=0
while [ "0$guess" -ne $number ] ; do
read guess
[ "0$guess" -lt $number ] && echo "Too low"
[ "0$guess" -gt $number ] && echo "Too high"
done
echo "That's right!"
exit 0
脚本分解
脚本的第一行 #!/bin/bash
告诉 Linux 使用 Bash shell 运行此脚本。每个脚本都以 #!
字符对开头,这表示这是一个 shell 脚本。紧随 #!
之后的是要运行的 shell。在本例中,/bin/bash
是 Bash shell。
要为变量赋值,请列出变量的名称,后跟 =
符号。例如,语句 guess=0
将零值赋给 guess
变量。
你还可以使用 read
语句提示用户输入值。如果你编写 read guess
,Bash 会等待用户输入一些文本,然后将该值存储在 guess
变量中。
要引用变量的值,请在变量名称前使用 $
。因此,在将值存储在 guess
变量中之后,你可以使用 $guess
检索它。
你可以为变量使用任何你喜欢的名称,但 Bash 为自己保留了一些特殊的变量名称。一个特殊的变量是 RANDOM
,它每次你引用它时都会生成一个非常大的随机数。
如果你想在存储值的同时执行操作,你需要将语句括在特殊括号中。这告诉 Bash 首先执行该语句,=
将结果值存储在变量中。要评估数学表达式,请在语句周围使用 $(( ))
。双括号表示算术表达式。在我的示例中,number=$(( $RANDOM % 100 + 1 ))
评估表达式 $RANDOM % 100 + 1
,然后将值存储在 number
变量中。
标准算术运算符(例如 +
(加)、-
(减)、*
(乘)、/
(除)和 %
(取模))适用。
这意味着语句 number=$(( $RANDOM % 100 + 1 ))
生成一个介于 1 到 100 之间的随机数。取模运算符 (%
) 返回两个数字相除后的余数。在本例中,Bash 将一个随机数除以 100,留下一个范围在 0 到 99 之间的余数。通过将 1 添加到该值,你将获得一个介于 1 到 100 之间的随机数。
Bash 支持条件表达式和流程控制(如循环)。在“猜数字”游戏中,只要 guess
中的值不等于 number
,Bash 就会继续循环。如果猜测小于随机数,Bash 会打印“太低”,如果猜测大于数字,Bash 会打印“太高”。
工作原理
现在你已经编写了 Bash 脚本,你可以运行它来玩“猜数字”游戏。继续猜测直到你找到正确的数字
Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!
每次你运行脚本时,Bash 都会选择一个不同的随机数。
当学习一门新的编程语言时,这个“猜数字”游戏是一个很棒的入门程序,因为它以一种非常直接的方式练习了几个常见的编程概念。通过用不同的编程语言实现这个简单的游戏,你可以演示一些核心概念并比较每种语言的细节。
你有没有最喜欢的编程语言?你会如何用它编写“猜数字”游戏?关注本系列文章,了解其他可能让你感兴趣的编程语言的示例。
评论已关闭。