3

我当前的代码

tail -n 1 `ls -1t /path/*.txt 2>/dev/null | head -n 1` | awk '{print $1}'

如果目录中至少有一个*.txt文件,则可以正常工作。

但是如果没有这样的文件,tail则等待输入并且不会结束。

我如何需要修改我的代码以确保即使没有文件也能结束?

4

3 回答 3

1

进行了快速测试,添加/dev/null为“假”文件似乎可以解决问题。

tail -n 1 `ls -1t /path/*.txt 2>/dev/null | head -n 1` /dev/null | awk '{print $1}'
于 2013-09-04T15:28:21.023 回答
0

我认为您可以在读取时设置超时,如下所示:-

tail -f *.txt | read -t 30 line

或这个:-

if [ -f /path/*.txt ]; then 
   tail -n 1 `ls -1t /path/*.txt 2>/dev/null | head -n 1` | awk '{print $1}'
fi 
于 2013-09-04T15:28:20.353 回答
-1

一个简单的 if 语句来检查文件是否存在可能是最好的和最少混淆的方法。克什:

if [ -f /path/*.txt ]; then 
    tail -n 1 `ls -1t /path/*.txt 2>/dev/null | head -n 1` | awk '{print $1}'
fi 

添加不同的bash语法

files=(f/path/*.txt)
if [ -f ${files[0]} ];
    tail -n 1 `ls -1t /path/*.txt 2>/dev/null | head -n 1` | awk '{print $1}'
fi 
于 2013-09-04T15:28:09.880 回答