#! /bin/bash
while :
do
filenames=$(ls -rt *.log | tail -n 2)
echo $filenames
cat $filenames > jive_log.txt
sleep 0.1
done
我想从目录中读取最新的2个文件并使用bash加入它们。 但是,当前目录中不存在具有扩展名.log的文件时,命令ls -rt *.log
将失败,并显示error "ls: cannot access *.log: No such file or directory"
。出现错误后,它看起来像while循环没有执行。 之后我该怎么做,即使一个命令失败,无限循环也会继续。bash继续执行命令失败
忽略错误使用'filenames = $(ls -rt * .log 2>/dev/null | tail -n 2)' – anubhava
1.)使用'find'而不是'ls'。 2.)仅当使用[errexit](https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html)选项set -e时,Bash才会退出。 3.)使用'set -x'来调试你的脚本。 – ceving
我正在使用ls -rt,这样我就可以得到2个最新的文件。我想find不支持这个。另外,尝试设置+ E,但仍然没有工作。 – Vinay