家庭作业:刽子手

时间:2013-01-11 17:26:15

标签: bash

我正在做家庭作业,必须制作一个有效的刽子手应用程序。 我得到了大部分工作,但我想做点什么,并且无法弄明白该怎么做。

我想做什么: 有一个名为$string的字符串,其中包含单词列表中的随机单词。当我开始使用hangman时,我想为随机单词中的每个字符显示"*"。 其次,我希望在玩家猜到的时候,将"*"与真实的角色值联系起来。

因此,如果单词为“Hello”,我想显示"*****",当有人猜到一封信"l"时,它会显示"**ll*"

我尝试了什么:

替换子字符串 - http://tldp.org/LDP/abs/html/string-manipulation.html

tr(有几种格式,并没有真正理解如何正确使用它。我绑定[CHAR*REPEAT]但一直收到错误) 并搜索了很多网站,但大多数热门内容都是关于查找1个特定字符而不是字符串中的所有字符。

你能帮我理解吗?

2 个答案:

答案 0 :(得分:4)

bash的parameter expansionpattern matching会:

$ string="hello world"
$ guess=""
$ echo "${string//[^[:space:]$guess]/*}"
***** *****

$ guess+="l"
$ echo "${string//[^[:space:]$guess]/*}"
**ll* ***l*

$ guess+="o"
$ echo "${string//[^[:space:]$guess]/*}"
**llo *o*l*

答案 1 :(得分:2)

如果您有一个猜测字符和字符串的列表,您可以通过告诉tr将除了猜测的字符,空格和换行符之外的所有内容替换为“*”来掩盖它:

guessed="etaonris"
string="doing a homework assignment"
masked=$(tr -c "\n $guessed" "*" <<< "$string")
echo "$masked"

这会给你*oin* a *o*e*or* assi*n*ent