ログファイルに書き込むとき、私のスクリプトがどのように機能するのかわかりません。

ログファイルに書き込むとき、私のスクリプトがどのように機能するのかわかりません。

ある時点でログファイルに書きたい非常に単純なkshスクリプトがあります。私は2つの場所で次のコマンドを使用します...

print "Directory listing 1:\n" > ${LogFile}
ll >> ${LogFile}

(注:このコマンドを2番目に使用すると、ディレクトリリスト2が印刷されます。)

私の問題は、後でログファイルを表示したときにこのコマンドを2回目に実行したときにのみ機能することです。したがって、「ディレクトリリスト1」とそれに付随する「ll」出力はありません。

私のロジックに問題がないことを確認するためにスクリプトを試してテストしました。各コマンドの前に印刷テストコマンドを追加すると、そのコマンドが実行されることがわかりました。

私が何か間違っているのか、それとも気付かなかったのか?

答え1

>(最初の行)を使用してリダイレクトするたびに${LogFile}ゼロに切り捨てられ、記録されます。私が理解したことが正しい場合は、上記の作業を2回実行すると、最初の内容が2番目の内容で上書きされます。

あなたがしなければならないことは:

> ${LogFile}    # This just truncates if there was anything there, writes nothing
 ...
echo "First round" >> ${LogFile}
ls -l >> ${LogFile}
 ...
echo -e "\nSecond round" >> ${LogFile}
ls -l >> ${LogFile}
 ...

関連情報