У меня есть сценарий bash, который захватывает некоторые значения, их в массиве и затем вызывает эти значения массива в html-части сообщения (html-таблица)
Я проверяю наличие XML файла на сегодняшний день:
if [ -f /home/scrptadmin/health/${node}/$(date +%F)*.xml ]; then
#add parsing of files here later, for now simple file check
#declare "bk_${node}="SUCCESS"
bk[$i]='SUCCESS'
echo ${bk[$i]}
else
bk[$i]='FAIL'
echo ${bk[$i]}
fi
Я знаю, что $ bk [5] заполняется "FAIL" - xml файл с 2013 года и не соответствует сегодняшней дате, поэтому $ bk [5] заполняется "FAIL" (как и ожидалось):
i=5
+ for node in '"${bkdir[@]}"'
++ ssh 178.215.139.120 ls -1td '/DRSSYSTEM/HORTA/PRESC2/*'
++ head -1
+ scp 178.215.139.120:/DRSSYSTEM/HORTA/PRESC2/2013-04-11-07-55-06_drfComponent.xml /home/scrptadmin/health/PRESC2
2013-04-11-07-55-06_drfComponent.xml 100% 49KB 48.5KB/s 00:00
++ date +%F
+ '[' -f '/home/scrptadmin/health/PRESC2/2014-04-09*.xml' ']'
+ bk[$i]=FAIL
+ echo FAIL
FAIL
Однако, когда я использую $ bk [5] в таблице:
<th scope=\"row\" style=\"background-color: rgb\(223, 223, 223\);\">Backup</th>
<td>${bk[4]}</td>
<td>${bk[5]}</td>
<td>${bk[6]}</td>
</tr>
<th scope=\"row\" style=\"background-color: rgb\(223, 223, 223\);\">Backup</th>
<td>SUCCESS</td>
<td>SUCCESS</td>
<td>SUCCESS</td>
</tr>
И он появляется в html как "SUCCESS". Я в тупике, поскольку я использую другие элементы этого массива в этой таблице, и они правильно отражают значение массива.
Обнаружено обходное решение по крайней мере - если я поместил значения массива в переменные без массива, он работает правильно:
BK_CUP1=${bk[4]}
BK_CUP2=${bk[5]}
BK_CUP3=${bk[6]}
<th scope=\"row\" style=\"background-color: rgb\(223, 223, 223\);\">Backup</th>
<td>${BKCUC1A}</td>
<td>${BKCUC2A}</td>
<td>${BKCUC3A}</td>
</tr>
<tr>