我有2个文件,我想检查其中一个是否为空而另一个不是。这就是我试过写的:
if [ !-s $tmp2 && -s $tmp ];then
我想要检查的是tmp是否为空并且tmp2不为空,但无论我做什么都不行,有时第一个条件总是正确的,有时是第二个条件。我搜索了网站,但没有找到任何可以帮助我的东西。
答案 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