到目前为止,这是我的功能:
function tinput() {
let counter=0
tail -f $1 |{
while read data; do
if [ counter -gt ${2:2} ]
then
counter=0
else
printf "$data"
counter=counter+1
fi
done
}
}
这个函数用于显示前n行输出而不是整个事物,我对bash脚本(或其衍生物)很新。
目前它出错:
tinput:4: parse error: condition expected: counter
我认为这是因为我声明的counter
变量不在循环范围内,因此它不存在,可能吗?
答案 0 :(得分:1)
您只需使用repeat
命令。
function tinput() {
tail -f $1 | repeat ${2:-2} IFS= read -re
}
一些解释:
这是repeat
循环的简短形式,因为正文中只有一个命令。 (长形式看起来像
repeat ${2:-2} do
IFS= read -re
done
或repeat ${2:-2} do IFS= read -re; done
。
)
IFS= read -r
确保逐行读取每一行,而不修剪任何前导或尾随空格,或处理输入中的任何反斜杠转义字符。
-e
选项使read
将其输入回显到标准输出,而不将输入分配给变量。
答案 1 :(得分:0)
对我来说,用户@JNevill正在寻找一些东西。我建议使用:
tail -f $1 | head -${2}
其中$ 1是你的文件,$ 2是你想从顶部读取的行数。