bash:捕获用户输入并执行几乎相同的命令

时间:2018-05-07 07:46:55

标签: bash

我正在尝试在shell中创建一个小文本游戏来学习bash。 我想捕获用户输入数字1到n并回答答案中的()之间的字符串。我也想确保用户没有把垃圾放进去,所以我选择了下面的代码,但它没有处理来自()部分的字符串,我可以处理,如果有任何输入但我无法处理差异来自输入。

#!/bin/bash
#
echo -e "You are in front of the gardenhouse."
echo -e "\n"
echo -e "1 - forward (door.1)"
echo -e "2 - left (woods.2)"
echo -e "3 - right (water.3)"
while true
do
  # (1) 
  read -p "Which way to go right now? " benutzereingabe


  # handle the userinput
  case $benutzereingabe in
   [13]* ) echo "You walk to the $direction.  \n"

break;;

   [nN]* ) exit;;

   * )     echo "Only Answers (1 bis 3) are possible. \n";;
  esac
done

感谢阅读。我很确定有更好的方法来满足我的需求。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

你确实至少有两个错误:

  1. function MyFunction(someVar: string, callback: () => void = () => { }) { callback(); } 应为[13][1-3]
  2. 您不能[123]声明break; case就够了。