linux - 通过将整数传递给尾部来修复尾部的无效行数
问题描述
运行 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 的四行?
解决方案
3号线有问题
#!/usr/bin/env bash
x=$((($2-$1)+1))
head -n $1 $3 | tail -n -$x
这需要说 1 美元,而不是 2 美元。
并且行尾是 Mac,而不是 Linux。
推荐阅读
- curl - 使用 curl 通过 imap 删除消息
- css - 使用 JSX 或 Bootstrap 定位位于列表项上的锚元素的最有效方法是什么
- node.js - 使用运行时函数的 Twilio SSML
- tsql - SQL Server 从 2014 升级到 2017 和序号
- javascript - 向 Firebase 发出 POST 请求,但未按预期工作
- html - div 不会居中 CSS
- python - 精灵之间的pygame碰撞
- spring-cloud-gateway - Spring Cloud Gateway 动态路由
- python - 错误 #15:正在初始化 libiomp5.dylib,但发现 libiomp5.dylib 已经初始化
- java - Android - 在 Android 中设置自定义工具栏时出现 NullPointerException