我有一個腳本:For循環,產生附加價值的一個逗號分隔的字符串
OUTPUT_DIR=/share/es-ops/Build_Farm_Reports/WorkSpace_Reports
BASE=/export/ws
TODAY=`date +"%m-%d-%y"`
HOSTNAME=`hostname`
WORKSPACES=("bob_avail" "bob_used" "mel_avail" "mel_used" "sideshow-ws2_avail" "sideshow-ws2_used")
if ! [ -f $OUTPUT_DIR/$HOSTNAME.csv ] && [ $HOSTNAME == "sideshow" ]; then
echo "$HOSTNAME" > $OUTPUT_DIR/$HOSTNAME.csv # with a linebreak
separator="," # defined empty for the first value
for v in "${WORKSPACES[@]}"
do
echo -n "$separator$v" >> $OUTPUT_DIR/$HOSTNAME.csv # append, concatenated, the separator and the value to the file
#separator="," # comma for the next values
done
echo >> $OUTPUT_DIR/$HOSTNAME.csv # add a linebreak (if you want it)
fi
WORKSPACES2=("bob" "mel" "sideshow-ws2")
separator="" # defined empty for the first value
for v in "${WORKSPACES2[@]}"
do
echo -n "$separator`df -m $BASE/$v | awk '{if (NR!=1) {print $3","$2}}'`" >> $OUTPUT_DIR/$HOSTNAME.csv
separator="," # comma for the next values
done
產生這樣的:
sideshow
,bob_avail,bob_used,mel_avail,mel_used,sideshow-ws2_avail,sideshow-ws2_used
470400,1032124,661826,1032124,43443,8
但我想第二個for循環放於日期第一列是這樣的:
09-20-14,470400,1032124,661826,1032124,43443,8
意義
$TODAY,<bob avail>,<bob used>,mel avail>,<mel used>,<sideshow-ws2 avail>,<sideshow-ws2 used>
所以整體的輸出應該是這樣的:
sideshow
,bob_avail,bob_used,mel_avail,mel_used,sideshow-ws2_avail,sideshow-ws2_used
09-20-14,470400,1032124,661826,1032124,43443,8
,如果這則運行了一個cron我只需要檢查主機名是x和.csv文件確實存在,則:
sideshow
,bob_avail,bob_used,mel_avail,mel_used,sideshow-ws2_avail,sideshow-ws2_used
09-20-14,470400,1032124,661826,1032124,43443,8
09-20-15,470400,1032124,661826,1032124,43443,8
只需添加第二天的值。
你希望與'-n'相同的技巧。循環「WORKSPACES2」,運行這兩個命令,將它們都回顯到文件中,然後繼續。 (實際上你只需要運行一次命令,使用'{print $ 3','$ 2}'。) – 2014-09-21 01:04:59
由於某種原因,第一列沒有得到第一列的日期。我把輸出粘貼到我的問題中。 – 2014-09-21 02:02:37
您不能像工作區一樣遍歷日期。在循環之前,你只需'將'-n'回顯給文件。 – 2014-09-21 02:07:55