ループで処理される値をプッシュするには、シェルスクリプトでスタックを作成する必要があります。最初の要件は、スクリプトをポータブルインストーラーとして使用したいので(少なくともUnixライクなオペレーティングシステム間では)、これをポータブルな方法で実装する必要があるということです。2番目の要件は、ループがエントリを再帰的に処理しているときに新しい情報が表示される可能性があるため、ループ内で変更できる必要があることです。3番目の要件は、エントリごとに複数の情報行があることです(これはほとんど固定数であり、そうでない場合は、最初の情報行に基づいて計算できます)。
私の試みはスタックファイルを使用することです:
#!/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
これは、気分が悪いことを除いて、完全に機能します。これを行うための「ハッキー」な方法はありますか?
助けてくれてありがとう!