【问题标题】:how to prevent an error from breaking a loop如何防止错误打破循环
【发布时间】:2020-11-02 10:25:11
【问题描述】:

如果字符串包含的字符数少于您尝试使用此命令删除的字符数: (本例中为 4 个字符)

variable1=${string::-4}

并且该命令在循环中,错误导致循环中断

在没有先运行命令检查字符串是否超过 4 个字符的情况下,有没有办法防止循环中断?

..就像“忽略错误并继续”命令?

【问题讨论】:

    标签: linux bash loops error-handling break


    【解决方案1】:

    这可能是使用set -eset -o errexit 出错时退出的副作用。

    如果索引对输入字符串无效,则无法阻止此字符串索引引发错误。

    所以你必须实际检查索引在字符串中是否有效,例如:

    #!/usr/bin/env bash
    
    set -o errexit
    
    for string in 'Hello abcd' '42' 'worldfour' '!here'; do
      if [ ${#string} -ge 4 ]; then
        variable1=${string::-4}
      else
        variable1=
      fi
      printf '%s' "$variable1"
    done
    echo
    

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 2018-06-28
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多