私はよく同じパターンに従ってKSHシェルスクリプトを作成します。
- (1)1つ以上のコマンドから出力を取得する
- (2)grep | cut | awk | sedを使用してフォーマットし、画面またはファイルに出力します
そのために、(1)の出力を一時ファイルに保存し、そのファイルに対して(2)でフォーマットを行うことがよくあります。
そのコードを例にとります:
TMPFILE=file.tmp
# If tmpfile exists rm it.
[ -f $TMPFILE ] && rm -f $TMPFILE
for SERVICE in $(myfunc); do
getInfo $SERVICE > $TMPFILE # Store raw output in the TMPFILE
# I retrieve the relevant data from the TMPFILE
SERV_NAME=$(head -1 $TMPFILE | sed -e 's/ $//')
SERV_HOSTNAME=$(grep HOSTNAME $TMPFILE | cut -d "=" -f2)
SERV_ARGS=$(grep Arguments $TMPFILE | cut -d ":" -f2)
print $SERV_NAME $SEP $SERV_HOSTNAME $SEP $SERV_ARGS
rm -f $TMPFILE #rm the TMPFILE in vue of next iteration
done
パイプ、リダイレクト、その他を使用して、毎回ファイルがディスクに書き込まれるのを回避する方法はありますか?
それが役立つ場合は、kshバージョンM-11 / 16 / 88iを使用しています
後世のために:この1つの重複としてマークされた別の質問unix.stackexchange.com/questions/63923/…には、ここでも使用できる名前付きのfifoパイプに関する回答が含まれています(ただし、おそらく、この特定のケース)。
—
goldilocks 2013
@goldilocks:2つの質問を1つに統合できるかもしれません。これを行うためにモデレーターに連絡できますか?
—
rahmu 2013
@rahmu:他の質問にフラグを付けました。それは今の力次第だと思います...
—
ゴルディロックス2013
PATH
他のシェルや環境変数などの重要なものを壊さないようにすることは良い形です。TMPFILE
大丈夫かもしれませんが、TMPDIR
特別なので、あなたは本当にその綱渡りをしたいですか?