博客
关于我
linux bash中too many arguments问题的解决方法
阅读量:790 次
发布时间:2023-01-31

本文共 570 字,大约阅读时间需要 1 分钟。

如何判断文件内容是否为空?这篇文章将介绍一个常见的shell编程问题,并提供一种有效的解决方法。

  • 问题背景
    当使用以下命令检查文件是否为空时:
  • if test -z `cat filename`

    可能会遇到“too many arguments”或“binary operator expected”等错误。这是因为shell解析命令时会误解多个字符串参数。

    问题原因

  • filename中含有空格或回车符
  • 未将filename置于双引号中
  • 解决方法

    在shell编程中,所有文件名或变量都应用双引号包裹,以避免参数解析错误。以下是修改后的命令,同时保留了代码的可读性和功能性:

    if test -z "`cat filename`"

    这种写法可以处理包含空格或回车的文件名,同时更具通用性,避免类似问题的发生。

    扩展方案

    如果采用[[ ]]结构,可以进一步提升代码的健壮性。例如:

    [[ -z "`lsof -i:22`" ]] && echo "the port is not running" || echo "the port is running"

    [[ ]]结构比[ ]更安全,特别是在处理有逻辑符 (&, || 等) 时,可以有效减少错误报错的可能性。

    通过使用双引号和结构正确的方式,可以有效解决类似问题,并提升脚本的可靠性。

    转载地址:http://jfwfk.baihongyu.com/

    你可能感兴趣的文章
    LINQ的ElementAt与ElementAtOrDefault方法
    查看>>
    linq的两个精品小工具
    查看>>
    LinQ的使用
    查看>>
    LINQ能不能用系列(一)LINQ to Object 效率比对
    查看>>
    LINQ能不能用系列(二)LINQ to SQL 效率比对
    查看>>
    LinQ:list基础操作
    查看>>
    Linr PS toolkit(Photoshop开发人员辅助工具)
    查看>>
    Lintcode 74 First Bad Version solution 题解
    查看>>
    LintCode A + B Problem
    查看>>
    LintCode Python 简单级题目 8.旋转字符串
    查看>>
    LintCode 第一题fizz buzz
    查看>>
    lintcode-418-整数转罗马数字
    查看>>
    Lintcode91 Minimum Adjustment Cost solution 题解
    查看>>
    Lintcode: Compare Strings
    查看>>
    LintCode: Longest Common Substring
    查看>>
    Lintcode: Nuts & Bolts Problem
    查看>>
    Lintcode: O(1) Check Power of 2
    查看>>
    Lintcode: Topological Sorting
    查看>>
    LintCode_114 不同的路径,115 不同的路径 II
    查看>>
    linux */10 * * * *,Linux学习之路(10)
    查看>>