在Unix

时间:2016-02-04 13:57:53

标签: bash unix scripting

编写一个名为print_lines.sh的脚本,它一起使用head和tail来打印文件中的一组特定行。该脚本应该有三个参数:要开始的行号,要停止的行号以及要使用的文件。这是一个示例运行:

 `[user@localhost ~]$ print_lines.sh 7 10 /etc/passwd
  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  halt:x:7:0:halt:/sbin:/sbin/halt
  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  operator:x:11:0:operator:/root:/sbin/nologin
  [user@localhost ~]$` 

在此示例中,脚本打印/ etc / passwd文件的第7行到第10行(包括)。您的脚本必须执行错误检查。具体来说,您需要检查以下所有内容:

  1. 您获得了正确数量的参数(3)。
  2. 指定的文件存在且是普通文件。
  3. 指定的第一个行号小于或等于指定的最后一个行号。
  4. 文件中的实际行数大于要打印的最后一行。 如果这些条件中的任何一个不成立,则应向用户打印相应的错误消息并停止。如果它们都满足了,那么你需要做一些算术运算并一起使用head和tail来打印出所请求的行。
  5. 我知道这是这样的:

    #!/bin/bash
    
    heads -n 10 /etc/passwd | tails -3
    

    不确定如何休息......

1 个答案:

答案 0 :(得分:1)

  1. 可以通过metadata.create_all(conn)
  2. 访问属性数量
  3. $#将测试文件是否存在且是普通文件
  4. test -f $file将测试$ x是否小于$ y
  5. test $x -lt $y将输出文件中的行数