我有一个以下格式的文本文件:
Apple
A Ant
B Bat
B Ball
每个字符的定义数量可以是任意数字。
我正在编写一个shell脚本,它将接收像“A B”这样的输入。我期待的shell脚本的输出是可以创建的可能的字符串序列。
对于输入“A B”,输出将为:
Apple Bat
Apple Ball
Ant Bat
Ant Ball
我尝试了数组,它没有按预期工作。任何人都可以帮助解决一些关于如何解决这个问题的想法吗?
答案 0 :(得分:0)
使用关联数组来完成此任务:
#!/usr/bin/env bash
first_letter=$1
second_letter=$2
declare -A words # declare associative array
while read -r alphabet word; do # read ignores blank lines in input file
words+=(["$word"]="$alphabet") # key = word, value = alphabet
done < words.txt
for word1 in "${!words[@]}"; do
alphabet1="${words[$word1]}"
[[ $alphabet1 != $first_letter ]] && continue
for word2 in "${!words[@]}"; do
alphabet2="${words[$word2]}"
[[ $alphabet2 != $second_letter ]] && continue
printf "$word1 $word2\n" # print matching word pairs
done
done
以A
B
作为参数传入的输出(包含您问题中的内容):
Apple Ball
Apple Bat
Ant Ball
Ant Bat
您可能需要参考这篇文章以获取关于关联数组的更多信息: Appending to a hash table in Bash