В нашей программе мы даем оболочке дождаться некоторых определенных файлов c и, если найдем, выполнить следующую bash. Код работал идеально несколько дней go, но в последнее время он показывает странную ошибку.
Во-первых, давайте посмотрим код:
#!/bin/bash -xv
...
...
field 1 << END |
${interface_redpost_rcv}/__TEMP__/${redpost_id}/xyz.csv.*.IF //files that match this format
${interface_redpost_rcv}/__TEMP__/${redpost_id}/abc.csv.*.IF //and this
...
...
END
while read fn ; do
while : ; do
[ -e ${fn} ] && break
sleep 10
# リミット
[ $(date +%H%M) -lt ${limit} ] || exit 1
done
done
, если есть какой-либо файл, который соответствует этому формату с самого начала, l oop ломается, и он работает отлично, но проблема начинается, когда во время выполнения файла нет.
Он постоянно проходит весь день без пропуска, даже если сейчас есть файлы.
LOG:
+ field 1
+ read fn
+ :
+ '[' -e '#!/bin/bash' -xv ']'
/home/batch/bash/EXAMPLE.BASH: 50 line: [: Expected binary operator
+ sleep 10
++ date +%H%M
+ '[' 2120 -lt 2359 ']'
....
....
....
И в журнале где находится '[' -e '#!/bin/bash' -xv ']'
, это #!/bin/bash
взято?
BASH версия:
GNU bash, version 4.2.46 (2) -release (x86_64-redhat-linux-gnu)
Было бы очень полезно, если бы кто-то мог указать, где проблема и если есть какое-либо другое лучшее решение для реализации, ждите файлов на bash.