我正在尝试bash,我正在努力制作一个简单的刽子手游戏。
一切正常,但我不明白如何做一件事:
我向用户显示带有猜测字母的单词(例如,世界是hello world,用户猜到' l'我向他们展示** ll * *** l *)
我存储用户已在var guess
中尝试过的字母我是这样做的:
echo "${word//[^[:space:]$guess]/*}"
我现在要做的事情就是回显字母,但忽略用户已经尝试过的字母,所以在这种情况下显示没有L的完整字母。
我已经尝试过与我刚刚展示的方式相同的方式,但它不会很有效。
如果您需要更多信息,请告诉我。
谢谢, 添
答案 0 :(得分:1)
您没有显示您尝试的内容,但参数扩展正常。
$ alphabet=abcdefghijklmnopqrstuvwxyz
$ word="hello world"
$ guesses=aetl
$ echo "${word//[^[:space:]$guesses]/*}"
*ell* ***l*
$ echo "${alphabet//[$guesses]/*}"
*bcd*fghijk*mnopqrs*uvwxyz
答案 1 :(得分:0)
首先将两个字符串存储在文件中,每行存储一个字符:
sed 's/./&\n/g' | sort <<< $guess > guessfile
sed 's/./&\n/g' | sort <<< $word > wordfile
然后我们可以过滤仅存在于其中一个文件中的单词,并将这些行粘贴在一起作为字符串:
grep -xvf guessfile wordfile | paste -s -d'\0'
当然,我们自己清理:
rm wordfile
rm guessfile
如果输出不正确,请尝试在grep中切换参数(即wordfile guessfile
而不是guessfile wordfile
)。