我当前的代码
tail -n 1 `ls -1t /path/*.txt 2>/dev/null | head -n 1` | awk '{print $1}'
如果目录中至少有一个*.txt
文件,可以正常工作。
但是如果没有这样的文件,tail
正在等待输入而不会结束。
我如何修改我的代码以确保即使没有文件也会结束?
答案 0 :(得分:1)
快速测试,将/dev/null
添加为“假”文件似乎可以解决问题。
tail -n 1 `ls -1t /path/*.txt 2>/dev/null | head -n 1` /dev/null | awk '{print $1}'
答案 1 :(得分: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
答案 2 :(得分:-1)
检查文件是否存在的简单if语句可能是最好的,也是最不模糊的方法。 ksh的:
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