我正在写一个脚本,并计划让它成为交互式的。这有点像寻宝游戏。脚本基本上是向用户打招呼,并向用户提供如何继续的指示。
这些说明涉及一系列密码(用户输入),这些密码将根据使用的密码显示某些信息。我计划根据日期对其中一个密码使用破解。
我将让代码进行评估,但我只是问什么是正确的方法(什么样的循环,以及语法方面的一些帮助。)
#!/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 and或类似的东西。
要将一行用户输入读取到变量$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