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
之前终止脚本。
为避免意外终止,您可以使用以下方法之一:
不要使用
-e
标志确保语句始终成功:
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/