仅当变量的先前值为零时,以下带有调试选项'set -e -v'的脚本才会在增量运算符处失败.
#!/bin/bash
set -e -v
i=1; let i++; echo "I am still here"
i=0; let i++; echo "I am still here"
i=0; ((i++)); echo "I am still here"
Run Code Online (Sandbox Code Playgroud)
bash(GNU bash,版本4.0.33(1)-release(x86_64-apple-darwin10),还有GNU bash,版本4.2.4(1)-release(x86_64-unknown-linux-gnu))
有任何想法吗?
a.sh的内容是
echo start
let index=(RANDOM % 4)
echo $index
Run Code Online (Sandbox Code Playgroud)
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$
Run Code Online (Sandbox Code Playgroud)
看我上次运行a.sh,只输出“start”,不输出索引,说明let index=(RANDOM % 4)有问题,退出码为1。
为什么 RANDOM 变量会产生这种随机误差?我如何解决它?