Как проверить, если один файл пуст, а другой не находится в одном состоянии, используя bash - PullRequest
2 голосов
/ 28 ноября 2011

У меня есть 2 файла, и я хочу проверить, если один из них пуст, а другой нет.Вот что я пытался написать:

if  [ !-s $tmp2 && -s $tmp ];then

Все, что я хочу проверить, это если tmp пуст и tmp2 не пуст, но что бы я ни делал, это не работает, иногда первое условие всегда верноа иногда и второй.Я искал сайт и не нашел ничего, что могло бы мне помочь.

Ответы [ 2 ]

3 голосов
/ 28 ноября 2011

Следующее должно работать

if [[ ! -s $tmp && -s $tmp2 ]] ; then
   echo "OK"
else
   echo "Not OK"
fi ;

-s означает, что файл существует и имеет размер больше 0

! -s означает, что файл пуст (или не существует)

Таким образом, приведенное выше проверяет, является ли tmp пустым и tmp2 не пустым .

2 голосов
/ 28 ноября 2011

Вы меняете намерение.Сделайте это -

if [ ! -s "$tmp" ] && [ -s "$tmp2" ]; then

Обновить

Убедитесь, что в конце оператора if указано fi

[jaypal~]$ ls tmp* # Checking to see if tmp file exists
tmp2

[jaypal~]$ cat sc.sh 
#!/bin/bash

a=tmp
b=tmp2

if [ ! -s $a ] && [ -s $b ]; then
echo "ok"
fi    # End your if statement with fi

[jaypal~]$ ./sc.sh 
ok # Output confirms that tmp file does not exist and tmp2 exists and has size greater than zero
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...