Bash显示字符,如果不是字符串

时间:2015-04-04 09:32:08

标签: bash character

我正在尝试bash,我正在努力制作一个简单的刽子手游戏。

一切正常,但我不明白如何做一件事:

我向用户显示带有猜测字母的单词(例如,世界是hello world,用户猜到' l'我向他们展示** ll * *** l *)

我存储用户已在var guess

中尝试过的字母

我是这样做的:

echo "${word//[^[:space:]$guess]/*}"

我现在要做的事情就是回显字母,但忽略用户已经尝试过的字母,所以在这种情况下显示没有L的完整字母。

我已经尝试过与我刚刚展示的方式相同的方式,但它不会很有效。

如果您需要更多信息,请告诉我。

谢谢, 添

2 个答案:

答案 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)。