我創建了一個bash腳本,用於將ASCII文件解析爲逗號分隔的輸出。這很好。現在,這些文件的新文件佈局正在逐漸引入。有條件使用函數?
我的腳本現在有,我想這取決於特定的標記物存在於ASCII文件頭調用兩個剖析功能(每一個佈局)。該腳本正是如此結構:
#!/bin/bash
function parseNewfile() {...parse stuff...return stuff...}
function parseOldfile() {...parse stuff...return stuff...}
#loop thru ASCII files array
i=0
while [ $i -lt $len ]; do
#check if file contains marker for new layout
grep CSVHeaderBox output_$i.ASC
#calls parsing function based on exit code
if [ $? -eq 0 ]
then
CXD=`parseNewfile`
else
CXD=`parseOldfile`
fi
echo ${array[$i]}| awk -v cxd=`echo $CXD` ....
let i++
done>>${outdir}/outfile.csv
...
腳本不會犯錯了。它總是調用原始函數「parseOldfile」並忽略新函數。甚至當我用新的佈局專門爲我的腳本提供幾個文件。
我想要做的事情似乎很平凡。我在這裏錯過了什麼?
編輯:舊的和新的文件格式的樣本。
1)舊的文件佈局
F779250B
=====BOX INFORMATION=====
Model = R15-100
Man Date = 07/17/2002
BIST Version = 3.77
SW Version = 0x122D
SW Name = v1b1645
HW Version = 1.1
Receiver ID = 00089787556
=====DISK INFORMATION=====
....
2)新的文件佈局
F779250B
=====BOX INFORMATION=====
Model = HR22-100
Man Date = 07/17/2008
BIST Version = 7.55
SW Version = 0x066D
SW Name = v18m1fgu
HW Version = 2.3
Receiver ID = 028910170936
CSVHeaderBox:Platform,ManufactureDate,BISTVersion,SWVersion,SWName,HWRevision,RID
CSVValuesBox:HR22-100,20080717,7.55,0x66D,v18m1fgu,2.3,028910170936
=====DISK INFORMATION=====
....
您需要提供一個可重現的示例。 grep + if適用於一個簡單的示例。 – ctn
'grep'似乎沒有在文件'output_ $ i.ASC'中找到字符串'CSVHeaderBox'。顯示這樣的文件的示例內容。 –
你在輸出中看到'CSVHeaderBox'嗎? –