为什么当 'let' 表达式计算结果为 0 时,带有 -e 选项的 Bash 会退出? [复制]

2023-12-14

我很难理解为什么会这样-e选项退出此脚本。 仅当计算的表达式给出时才会发生0:

#!/bin/bash
set -ex
table_year=( 1979 1982 1980 1993 1995 )
year=$1 
let indice=year-1
real_year=${table_year[$indice]}
echo OK $real_year

在以下情况下是可以的:

./bash_test_array 2

但不是在以下情况下:

./bash_test_array 1 

indice这种情况等于0。为什么-e选项导致退出 ?


See help let:

退出状态: 如果最后一个 ARG 的值为 0,则 let 返回 1; let 返回 0 否则..

的行为let内置与常用的相同expr命令:

如果 EXPRESSION 为 null 或 0,则退出状态为 [...] 1 [...]

您可以使用算术扩展来代替:

indice=$(( year - 1 ))

即使指定的表达式的计算结果为 0,该语句也将返回 0。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么当 'let' 表达式计算结果为 0 时,带有 -e 选项的 Bash 会退出? [复制] 的相关文章

随机推荐