首页 > 解决方案 > 通过将整数传递给尾部来修复尾部的无效行数

问题描述

运行 Centos8。

这是我当前的(小)脚本:

#!/usr/bin/env bash
x=$((($2-$1)+1))
head -n $2 $3 | tail -n -$x

作为输入的示例:

sh script.sh 7 10 /etc/passwd

而我想要得到的是 /etc/passwd 中的第 7-10 行。

它应该相当简单,因为只是做

head -n 7 /etc/passwd | tail -n -4

完美地返回这 4 行。

但是,使用 $x (从第二个数字减去第一个数字加 1 获取输入)失败。每当我运行此代码时,我都会收到此错误:

tail: invalid number of lines: ‘4\r\r’

根据我的理解,这意味着代码不接受我所做的小数学中的 $x 输入,并认为它的 4 带有两个尾随空格?

我将如何解决这个问题,以便列出 /etc/password 的四行?

标签: linuxbashcentos

解决方案


3号线有问题

#!/usr/bin/env bash
x=$((($2-$1)+1))
head -n $1 $3 | tail -n -$x

这需要说 1 美元,而不是 2 美元。

并且行尾是 Mac,而不是 Linux。


推荐阅读