Linux脚本练习之script016-接受一个文件路径作为参数,如果参数个数小于 1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于 1,则显示第一个参数所指向的文件中的空白行数。
  TEZNKK3IfmPf 2024年03月29日 57 0

script016

题目

编写 /roo/bin/argsnum.sh,接受一个文件路径作为参数,如果参数个数小于 1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于 1,则显示第一个参数所指向的文件中的空白行数。

分析

本题考查的知识点:

  • 数字比较
  • if...elifif...else 多分支条件语句
  • grep 命令

思路:

  • 首先校验用户调用脚本是否输入一个参数,其次传入的文件路径必须存在并且是一个普通文件。
  • 然后通过 grep 命令查找文件中的空白行。这里使用了正则表达式 "^$" 去匹配文件中的空白行;而 -c 选项可以统计查询结果的行数。
  • 最终打印结果。

脚本

#!/bin/bash

####################################
#
# 功能:接受一个文件路径作为参数,如果参数个数小于 1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于 1,则显示第一个参数所指向的文件中的空白行数。
#
# 使用:传递文件路径作为第一个参数
#
####################################


# 参数校验
# 如果参数个数小于 1 个则给出提示信息并退出
if [ $# -lt 1 ]; then
    echo "请至少应该给一个参数!"
    exit
# 如果参数个数大于等于 1 个则继续进行下一步的操作
elif [ $# -ge 1 ]; then
    # 第一个参数是文件路径
    file_path="$1"
    # 还得判断文件路径是否存在并且是一个文件
    if [ -f "$file_path" ]; then
        # 使用 grep 命令提取空行数
        lines=$(grep "^$" -c "$file_path")
        # 打印结果
        echo "文件 $file_path 中的空白行数为:$lines"
    # 如果文件不存在或者不是文件则给出提示信息
    else
        echo "请输入有效的文件路径!"
    fi
fi

测试

执行 ./script016.sh filepath 调用脚本,其中 filepath 表示一个有效文件路径。

Linux脚本练习之script016-接受一个文件路径作为参数,如果参数个数小于 1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于 1,则显示第一个参数所指向的文件中的空白行数。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年03月29日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   51   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   30   0   0 linux服务器centos
  TEZNKK3IfmPf   2024年05月31日   29   0   0 linuxbind
  TEZNKK3IfmPf   2024年05月31日   39   0   0 linuxshell
TEZNKK3IfmPf