【问题标题】:What is wrong with my guessing game program?我的猜谜游戏程序有什么问题?
【发布时间】:2013-09-19 07:47:40
【问题描述】:

所以是的,我这样做是为了学校,但我已经编写了大部分脚本。我不知道它发生了什么,可能是语法错误,但它一直在搞砸(或者我确实如此)。

第一个问题是它不断发布您试图猜测的数字并且它说没有文件或目录(我不认为我在呼吁这样的事情)。 86 是当前的随机数。

./random: line 14: 86: No such file or directory

第二个问题是程序告诉我猜测总是太低(我也可以让它们总是太高)

 I'm thinking of a number between 1 and 100. Your guess:6

./random: line 14: 86: No such file or directory
Sorry, your guess is too low. New guess:87

./random: line 14: 86: No such file or directory
Sorry, your guess is too low. New guess:

这是我的代码:

#!/bin/bash


n1=$[($RANDOM % 100) +1]
guesses=1
echo -n "I'm thinking of a number between 1 and 100. Your guess:"

while read n2; do

if   [ $n2 = $n1 ]; then
break;  
else
echo    
if [ $n2 < $n1 ]; then 
echo -n "Sorry, your guess is too high. New guess:"
elif [ $n2 > $n1]; then
echo -n "Sorry, your guess is too low. New guess:"
fi      
fi
guesses=$((guesses+1))

done
echo
echo "Good job! It took you $guesses guesses to get the right number."

提前致谢。

【问题讨论】:

  • 好像忘记密码了。
  • ..你希望我们神奇地找出你的代码是什么?
  • 我觉得解决方法很简单,就是你引用的文件或目录都不存在,或者你引用错了。
  • 问题是没有这样的文件或目录。我认为缺少的文件是您的代码
  • 尝试使用[[ 而不是[。尝试使用-gt 而不是&gt;。尝试使用-lt 而不是&lt;。尝试使用-eq 而不是=

标签: bash


【解决方案1】:

这是上面 cmets 中描述的答案:

#!/bin/bash


n1=$[($RANDOM % 100) +1]
guesses=1
echo -n "I'm thinking of a number between 1 and 100. Your guess:"

while read n2; do

if   [[ $n2 -eq $n1 ]]; then
break;  
else
echo    
if [[ $n2 -gt $n1 ]]; then 
echo -n "Sorry, your guess is too high. New guess:"
elif [[ $n2 -lt $n1 ]]; then
echo -n "Sorry, your guess is too low. New guess:"
fi      
fi
guesses=$((guesses+1))

done
echo
echo "Good job! It took you $guesses guesses to get the right number."

一般来说,你需要注意 bash 给你的错误信息:

./random: line 14: 86: No such file or directory

第 14 行是:

if [ $n2 < $n1 ]; then 

我们知道在这种情况下 $n1 是 86。所以这意味着脚本正在尝试运行86,就好像它是一个命令一样,因此找不到文件错误。为什么 bash 会这样做?那么它可能将&lt; 解释为重定向而不是大于运算符。所以 if 条件语法有问题。是时候挖掘手册了http://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs

【讨论】:

  • [[ 仍然会破坏代码,但如果你只有一个 [.
  • 糟糕,我也忘了在 elif 中添加 $n1]] 之间的空格。已编辑...现在它可以按预期与[[ ]] 一起使用。
  • 更多阅读[[[之间的差异:stackoverflow.com/questions/13542832/…
猜你喜欢
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多