我看到了在 shell 脚本中实现关联数组的技巧。例如,print array["apples"]
可以将脚本编写为echo \$array$key
where key=apples。
但是,没有提到如何生成键来迭代数组。我能想到的唯一方法是将键存储在一个由空格分隔的变量中,这样我就可以使用 for 循环来遍历数组。
那么,是否有其他方法可以存储密钥以备后用?
我有以下几点testfile.txt
:
string1 1
string2 2
string3 3
string1 2
string2 4
string3 6
string1 3
string2 6
string3 9
Run Code Online (Sandbox Code Playgroud)
我有以下脚本:
#!bin/sh
oldstr="abc"
while read line
do
newstr=\`echo "$line" | sed 's/\(.*\)\( \)\([0-9].*\)/\1/'\`
echo "$oldstr vs $newstr"
if [ $oldstr == $newstr ]
then
echo "old $oldstr"
else
oldstr=$newstr
echo "new $oldstr"
fi
done < $@ | sort
echo "done"
Run Code Online (Sandbox Code Playgroud)
然后我运行脚本:
$ sh test.sh testfile.txt
Run Code Online (Sandbox Code Playgroud)
并得到输出:
abc vs string1
new string1
new string1
new string1
new string2
new string2 …
Run Code Online (Sandbox Code Playgroud)