如何防止错误破坏循环



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

variable1=${string::-4}

如果该命令在循环中,则错误会导致循环中断

在不首先运行命令检查字符串是否超过4个字符的情况下,是否有任何方法可以防止循环中断?

像";忽略错误并无论如何继续";命令

这可能是使用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

最新更新