我有一个脚本: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