如何使用bash检查一个文件是否为空而另一个文件不在一个条件下

时间:2011-11-27 20:17:07

标签: bash conditional-statements

我有2个文件,我想检查其中一个是否为空而另一个不是。这就是我试过写的:

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

我想要检查的是tmp是否为空并且tmp2不为空,但无论我做什么都不行,有时第一个条件总是正确的,有时是第二个条件。我搜索了网站,但没有找到任何可以帮助我的东西。

2 个答案:

答案 0 :(得分:3)

以下内容应该有效

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

-s表示文件存在且大小大于0

! -s表示文件为空(或不存在)

因此,上述检查 tmp 为空 tmp2 为空

答案 1 :(得分:2)

你正在扭转意图。这样做 -

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