我需要在 shell 脚本中创建一个堆栈,以便推送要在循环中处理的值。第一个要求是这必须以可移植的方式实现,因为我想将脚本用作可移植的安装程序(至少在类 Unix 操作系统之间)。第二个要求是它需要能够在循环内部进行更改,因为新信息可以在循环处理条目时以递归方式出现。第三个要求是每个条目我有不止一行的信息(这个多是一个固定的数字,如果不是的话可以根据第一行的信息来计算)。
我的尝试是使用堆栈文件:
#!/bin/sh
echo "First entry" > stack.txt
echo "More info for the first entry" >> stack.txt
echo "Even more info for the first entry" >> stack.txt
while read ENTRY < stack.txt; do
INFO2=`tail -n +2 stack.txt | head -n 1`
INFO3=`tail -n +3 stack.txt | head -n 1`
tail -n "+4" stack.txt > stack2.txt
# Process the entry...
# When we have to push something:
echo "New entry" > stack.txt
echo "Info 2" >> stack.txt
echo "Info 3" >> stack.txt
# Finally, rebuild stack
cat stack2.txt >> stack.txt
done
这很有效,只是感觉不对。有没有更“hacky”的方法来做到这一点?
提前感谢您的帮助!