0

環境のインベントリを作成するスクリプトがあります (それが言葉かどうかはわかりません)。

外に出て、ホスト名OS、IP、およびENV(dev、prodなど)を取得し、それらすべてをログファイルに吐き出します

スクリプトの先頭で、ログファイルが存在するかどうかを確認します。

[[ -f $LOGFILE ]] || touch $LOGFILE && echo "ENV" "\t" "HOSTNAME" "\t" "OS" "\t" "IPADDRESS"

私がやりたいのは、存在する場合は何もしないことです...それ以外の場合は、ヘッダーをタッチしてファイルにエコーします。

現在、実行するたびにヘッダー行がエコーされます。

4

2 に答える 2

0

あなたが与えるコードは、とにかくあなたのログファイルに行をエコーし​​ません。

[[ -f $LOGFILE ]] || printf "ENV\tHOSTNAME\tOS\tIPADDRESS" > $LOGFILE

printf"\t" をタブ文字として解釈します。出力リダイレクトによってファイルが作成され、書き込み用に開かれるため、 touch コマンドは必要ありません。

于 2012-09-26T01:56:55.817 に答える
0

||このようにとを同じ行に混在させると、コマンドが成功&&した場合に問題が発生します。完全なステートメント||に拡張することをお勧めします。if

if [[ ... ]]
then
   ...
else
   ...
fi
于 2012-09-26T01:34:54.953 に答える