如何告诉shell命令尾部不要等待参数

时间:2013-09-04 15:25:22

标签: linux shell tail

我当前的代码

tail -n 1 `ls -1t /path/*.txt 2>/dev/null | head -n 1` | awk '{print $1}'
如果目录中至少有一个*.txt文件,

可以正常工作。

但是如果没有这样的文件,tail正在等待输入而不会结束。

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

3 个答案:

答案 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