You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash猜数字游戏脚本无法访问AnswerDebug.sh,求解决方法

Bash猜数字游戏文件访问错误修复及优化方案

错误原因分析

  • 脚本执行过程中通过cd切换目录后未正确返回原始路径,导致再次调用bash AnswerDebug.sh时,当前工作目录已不是脚本所在目录,无法找到目标文件。
  • 冗余的chmod +x AnswerDebug.sh命令,脚本已能运行说明权限足够,该命令只会因路径问题额外报错。

修复方案

1. 确保脚本能定位自身

在脚本开头添加代码获取自身绝对路径,不受当前工作目录变化影响:

SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
SCRIPT_PATH="$SCRIPT_DIR/AnswerDebug.sh"

后续重启游戏时使用该路径:bash "$SCRIPT_PATH"

2. 安全管理目录切换

用pushd和popd替代直接cd,操作完成后自动回到原始目录,避免路径混乱:

# 保存当前目录
pushd . > /dev/null
# 处理用户目录和分数目录
if [ ! -d "$name" ]; then
    mkdir -p "$name/Scores"
fi
cd "$name/Scores"
# 此处可添加计分相关读写操作
# 返回原始目录
popd > /dev/null

3. 修正数字比较逻辑

原脚本用=对比数字,改为-eq更符合Bash数字比较规范,避免字符串比较的潜在问题。

修复后的完整脚本

# 获取脚本自身绝对路径
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
SCRIPT_PATH="$SCRIPT_DIR/AnswerDebug.sh"

random=$((1 + $RANDOM % 10))
read -p "Enter A UserName: " name

# 安全处理用户目录与分数目录
pushd . > /dev/null
if [ ! -d "$name" ]; then
    mkdir -p "$name/Scores"
fi
cd "$name/Scores"
# 计分系统示例(取消注释即可完善)
# if [ -f score.txt ]; then
#     current_score=$(cat score.txt)
# else
#     current_score=0
# fi
popd > /dev/null

echo 'Guess a number between 1 and 10'
read -p "Enter your guess: " r

if [ "$r" -eq "$random" ]; then
    echo "Great job, $name! You guessed correctly."
    # 猜对加分逻辑
    # pushd . > /dev/null
    # cd "$name/Scores"
    # new_score=$((current_score + 10))
    # echo "$new_score" > score.txt
    # echo "Your score is now $new_score"
    # popd > /dev/null
else
    echo "Nope, $name! The correct number was $random."
fi

echo 'Want to play again? (y for yes, n for no)'
read m
if [ "$m" = "y" ]; then
    bash "$SCRIPT_PATH"
elif [ "$m" = "n" ]; then
    echo 'Thanks for playing!'
else
    echo "Invalid input, $name. Exiting game."
fi

计分系统完善提示

  • 在用户的Scores目录下创建score.txt存储分数
  • 猜对时增加固定分值(如+10),猜错可选择不加分或少量扣分
  • 每次游戏开始前读取当前分数,结束后更新写入文件

内容的提问来源于stack exchange,提问作者haritanshu93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:23:12