2015-02-04 4 views
1

У меня есть скрипт bash, в котором есть оператор if-then-fi. блок кода выполняется только тогда, когда XLS не пуст. В настоящее время я оценке это, используя следующее:bash script - Я хочу проверить, пуст ли XLS. если это так, я не хочу ничего делать. Если это не так, я хочу что-то сделать

FILESIZE = `wc -c < $FILENAME` 

, кажется, что размер файла по умолчанию генерируется 4096 байт, если файл пуст. Итак ...

if [ $FILESIZE -gt "4096" ]; then 
do something 
fi 

Однако мой босс не является большим поклонником жестких кодированных номеров. есть ли альтернативное решение, чтобы увидеть, имеет ли XLS данные?

спасибо!

+1

Сгенерировать пустой файл и сравнить их? –

+0

Использование этой функции, как 'stat' или' du', скорее подходит для этой цели, чем 'wc' (хотя кажется, что' -c' достаточно умен, чтобы фактически не читать весь файл). –

+0

Я также проверил со статусом и получил 4096 байт. Я действительно собирался переключить его, но теперь план состоит в том, чтобы полностью избавиться от метода. Я довольно новичок в среде. не могли бы вы рассказать о создании и сравнении пустых файлов? – tbermeo

ответ

0
if [ -r "$FILENAME ] # If there is a readable file "$FILENAME" 
then 
    if [ -s "$FILENAME" ] # If file "$FILENAME" has a size greater than zero bytes 
    then 
     do something 
    fi 
fi 
+0

Спасибо за ответ. Будет ли это решать проблему? потому что, как я уже упоминал, пробел не равен нулю. когда я запускаю l -ltr в своих архивных отчетах, я замечаю, что все пустые xls-файлы имеют 4096 байт. – tbermeo

0

Вы можете использовать команду xls2csv, если результат равен 0, файл пуст.

xls2csv file.xls | wc -l 

Эта команда обычно находится в пакете «catdoc».

+0

это конвертирует xls? – tbermeo

+0

эта команда преобразует xls в csv и выводит результат на stdout. – telemaco

+0

только что дал это вихрь - команда не найдена. – tbermeo

Смежные вопросы