我正在尝试用 shell 脚本制作一个火焰游戏。我取了两个名字并对名字进行排序。我的代码是这样的:
var=$(j=1;for((i=0;i<${#name1Low};i++));do echo "${name1Low:i:j}";done |sort|tr -d '\n') #sorted name1
var1=$(j=1;for((k=0;k<${#name2Low};k++));do echo "${name2Low:k:j}";done |sort|tr -d '\n') #sorted name2
为了降低一切,我这样做
if [[ $name1 =~ ^[a-zA-Z]+$ && $name2 =~ ^[a-zA-Z]+$ ]]
then
name1Low=$(echo $name1 | tr '[[:upper:]]' '[[:lower:]]')
name2Low=$(echo $name2 | tr '[[:upper:]]' '[[:lower:]]')
fi
要删除相同的字符,我这样做:
var2=$(diff <(fold -w1 <<< "$var") <(fold -w1 <<< "$var1")| awk '/[<>]/{printf $2}') #checking for differernt characters using diff and folding using fold to newline after every 1 character (fold -w1)
现在我面临的实际问题是在flames
部分。我正在运行一个循环来检查不同刺痛的长度,以及在该位置或迭代中存在的任何字符可以将其从中删除:
flames()
{
echo "$word ${#word}"
size=`echo ${#var2}`
for((i=0;i<${#word};i++))
do
echo " ${word:$i:1}"
if [[ $i == $size ]]
then
cha=`echo ${word:$i:1}`
word1=`echo ${word//$cha/}`
fi
done
word=`echo $word1`
echo "$word ${#word}"
}
它所做的就是一直工作直到 size 的值等于 value i
。之后我无法理解如何检查和删除直到只剩下一个字符?
while [ ${#word} -ne 1 ]
do
flames
done
上面的部分是无限运行的。还有比实际进行参数扩展更好的其他方法吗?