Shell脚本和用户输入

时间:2014-02-09 21:08:49

标签: linux bash shell while-loop

我正在编写一个脚本,并计划它是交互式的。这有点像寻宝游戏。该脚本基本上向用户表示问候,并向用户提供有关如何继续操作的说明。

说明书涉及一系列密码(用户输入),这些密码将根据使用的密码显示某些信息。我打算在其中一个密码上使用 break ,具体取决于日期。

我将留下要评估的代码,但我只是问这是什么方法(这是什么样的循环,对语法有一点帮助。)

#!/bin/bash
echo "Welcome User"; sleep 2;
echo "Random greeting and intro to the game"
select yn in "Yes" "No"; do
    case $yn in
        Yes) echo "Are you ready to play?"; break;;
        No) echo "Then get ready";;
    esac
done

echo "Please enter your first password"

有一个单独的文件使用:作为字段分隔符与游戏一起使用。我想知道循环查询密码的正确方法是什么,并根据输入的内容执行。

我正在寻找一些简单的东西来读取用户输入并根据它是否与另一个文件匹配执行一组指令(特定于每个密码),并且一旦输入最后一个密码就完成了。我在猜,读,如果和/或类似的东西。

1 个答案:

答案 0 :(得分:0)

要将一行用户输入读入变量$foo,请写:

IFS= read -r foo

IFS=告诉它没有字段分隔符,因此它不应该丢弃任何空格; -r告诉它应该将反斜杠视为文字反斜杠。)

你的循环可能永远是"永远"循环,意味着它循环直到遇到break语句:

while true ; do
    ...
    if ... ; then
        ...
        break      # jump out of the loop
    fi
    ...
done

我不知道你的意思是" [用户输入]是否与其他文件相匹配" - 听起来像其他文件非常复杂,有字段分隔符等等 - 但你很可能想要将其他文件读入内存,将其字段存储在适当的变量中:

IFS=: read -r field1 field2 field3 < the_other_file