所以我对此感到困惑,并不能真正理解为什么会这样。希望有人能够启发我!
我有grep
将其结果推送到名为out
的文件。然后我有以下代码....
if [ -s out ]; then
xargs -n1 basename < out
else
echo "NO FILES EXIST"
fi
if path工作文件,但当文件大小为0
时,它不会沿着else路径运行...
然后我尝试了这个......
if [ ! -s out ]; then
xargs -n1 basename < out
else
echo "NO FILES EXIST"
fi
一切都按预期工作,但相反(显然)......
所以我的问题是,我不知道幕后的-s
旗帜是什么?这完全让我心烦意乱。如果有人能够对此有所了解,那将非常感激!
谢谢!
ls -lrt
- 文件的输出不会在其他路径下移动。如果我添加!
运算符,文件将沿if路径路径向下,然后如果文件填充它将沿着else路径向下。
0 Jul 30 12:15 out
建议将$ filename变为一个变量并以此方式传递它,这是不幸的。我想也许它与我的grep
有关?整个代码如下:
grep -l 'TimeStamp: '$2'/'$3'/'$1 $ARCHIVE/*/* > $filename
if [ -s "$filename" ]; then
xargs -n1 basename < out
else
echo "NO FILES EXIST"
fi
$ 1,$ 2,$ 3分别是yyyy,mm,dd。
另一个想法是它可能是我的机器?我正在运行Linux Ubuntu 3.2.0-58-generic。
谢谢!
答案 0 :(得分:1)
无法重现它。你能按照以下步骤操作:
touch test.txt
[ -s "test.txt" ] && echo "empty"
答案 1 :(得分:1)
-s FILE: True if file exists and is not empty
您提到文件存在,并且其大小为零,因此测试应为True
。
尝试使用文件的完整路径,而不仅仅是out
。例如&GT;
if [ -s /full/path/to/out ]; then
xargs -n1 basename < out
else
echo "NO FILES EXIST"
fi
我认为问题不在于测试本身,而在于脚本运行的路径。