首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当'let‘表达式的计算结果为0时,为什么使用-e选项退出?

当'let‘表达式的计算结果为0时,为什么使用-e选项退出?
EN

Stack Overflow用户
提问于 2015-03-31 19:12:18
回答 2查看 90关注 0票数 2

我很难理解为什么bash -e选项会退出这个脚本。只有当计算出的表达式给出0时,才会发生这种情况

代码语言:javascript
复制
#!/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

在以下情况下可以使用Is:

代码语言:javascript
复制
./bash_test_array 2

但不是什么时候:

代码语言:javascript
复制
./bash_test_array 1 

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

EN

回答 2

Stack Overflow用户

发布于 2015-03-31 19:16:49

请参阅help let

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

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

如果表达式为null或0,则

退出状态为... 1 ...

您可以改用算术扩展:

代码语言:javascript
复制
indice=$(( year - 1 ))

即使赋值表达式的计算结果为0,此语句也将返回0。

票数 5
EN

Stack Overflow用户

发布于 2015-03-31 19:17:02

您可以使用以下技巧:

代码语言:javascript
复制
let indice=year-1 || true
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29367309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档