gpt4 book ai didi

linux - 为什么使用 bash -e 运行时 "let"有时会退出?

转载 作者:行者123 更新时间:2023-12-02 09:03:14 24 4
gpt4 key购买 nike

a.sh的内容是

echo start
let index=(RANDOM % 4)
echo $index

a.sh 有时无法生成数字

gqqnbig@instance-1:~/test/systemd$ vim a.sh
gqqnbig@instance-1:~/test/systemd$ bash -e a.sh
start
3
gqqnbig@instance-1:~/test/systemd$ bash -e a.sh
start
3
gqqnbig@instance-1:~/test/systemd$ bash -e a.sh
start
2
gqqnbig@instance-1:~/test/systemd$ bash -e a.sh
start
2
gqqnbig@instance-1:~/test/systemd$ bash -e a.sh
start
2
gqqnbig@instance-1:~/test/systemd$ bash -e a.sh
start
3
gqqnbig@instance-1:~/test/systemd$ bash -e a.sh
start
3
gqqnbig@instance-1:~/test/systemd$ bash -e a.sh
start
gqqnbig@instance-1:~/test/systemd$ echo $?
1
gqqnbig@instance-1:~/test/systemd$

看我上次运行a.sh时,它只输出“start”,但不输出索引,这意味着let index=(RANDOM % 4)有问题,退出代码为 1。

为什么 RANDOM 变量会产生这个随机错误?我该如何修复它?

最佳答案

使用 -e 会导致 bash 因错误而终止。

let 的计算结果为 0 时,将被视为错误。 Bash 将在打印值 0 之前终止脚本。


为避免意外终止,您可以使用以下方法之一:

  1. 不要使用-e标志

  2. 确保语句始终成功:

let 'index=(RANDOM % 4)' || true

let 'index=(RANDOM % 4)' || :
  • 避免使用 let(根据 @LéaGris):
  • index=$((RANDOM % 4))

    关于linux - 为什么使用 bash -e 运行时 "let"有时会退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61515205/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com