【发布时间】:2020-11-02 10:25:11
【问题描述】:
如果字符串包含的字符数少于您尝试使用此命令删除的字符数: (本例中为 4 个字符)
variable1=${string::-4}
并且该命令在循环中,错误导致循环中断
在没有先运行命令检查字符串是否超过 4 个字符的情况下,有没有办法防止循环中断?
..就像“忽略错误并继续”命令?
【问题讨论】:
标签: linux bash loops error-handling break
如果字符串包含的字符数少于您尝试使用此命令删除的字符数: (本例中为 4 个字符)
variable1=${string::-4}
并且该命令在循环中,错误导致循环中断
在没有先运行命令检查字符串是否超过 4 个字符的情况下,有没有办法防止循环中断?
..就像“忽略错误并继续”命令?
【问题讨论】:
标签: linux bash loops error-handling break
这可能是使用set -e 或set -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
【讨论】: