while true
do
if [ $userinput = 1 ];
then
guesses=10
(( answer = RANDOM % 20 ))
read -p "Guess the number between 1-20 if you can $answer : " input
if [ $input != $answer ];
then
(( guesses=guesses-1 ))
echo "Wrong answer! You got ${guesses} left!"
else
echo "Correct answer! You had ${guesses} left. Lucky you!"
read -p "${name}, would you like to continue playing or not [Yes/No]? " decide
if [ $decide = "Yes" ];
then
continue
else
echo -e "${Red}Bye bye!"
示例:
guess=10
用户输入2个猜测,然后程序必须从总共10个猜测中减去这2个猜测,在这种情况下,10-2=8个猜测。怎么做?
发布于 2018-09-20 19:55:45
如果您专门使用Bash,那么let
内置就是您想要的。
let
内置是在Bash中执行整数算法的一种干净方法。您应该阅读help let
的输出,以更好地了解它的工作原理。
在链接图片中圈出的两条线可以写成如下:
let guesses=10 # Set "guesses" to 10
let guesses-=1 # Decrement "guesses" by 1
大多数精通的Bash黑客都会以这种方式编写这些操作。您也可以使用后减量运算符。
let guesses-- # Also decrement "guesses" by 1
在你看来这可能有点干净。
发布于 2018-09-20 20:33:21
only 必需的更改正在将guesses=10
从循环中移出,因此它只运行一次(当脚本启动时)。
至于最佳实践减量表单,只使用terser的方法(尽管与您现有的实现相比不太有效)如下所示:
(( guesses-- ))
...whereas是一种更可移植的方法(与所有POSIX-家庭shell兼容)是:
guesses=$(( guesses - 1 ))
https://stackoverflow.com/questions/52432198
复制相似问题