我正在编写一个脚本,并计划使其具有交互性。这有点像寻宝游戏。该脚本基本上是向用户打招呼,并向用户提供如何继续操作的说明。
这些说明涉及一系列密码(用户输入),这些密码将根据所使用的密码显示某些信息。我计划根据日期对其中一个密码进行破解。
我将保留代码进行评估,但我只是询问正确的方法是什么(什么样的循环,以及对语法的一些帮助。)
#!/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"
有一个单独的文件,使用 :
作为游戏中使用的字段分隔符。我想知道循环询问密码并根据输入的内容执行的正确方法是什么。
我正在寻找一些简单的东西来读取用户输入,并根据它是否与其他文件匹配来执行一组指令(特定于每个密码),一旦输入最后一个密码,它就会完成。我猜是 while、read、if 或类似的东西。
最佳答案
要将一行用户输入读取到变量 $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
关于linux - Shell 脚本和用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21665057/