相关疑难解决方法(0)

bash set -e和i = 0;让i ++不同意

仅当变量的先前值为零时,以下带有调试选项'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))

有任何想法吗?

bash shell increment set operator-keyword

12
推荐指数
2
解决办法
3万
查看次数

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

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 变量会产生这种随机误差?我如何解决它?

linux bash

2
推荐指数
1
解决办法
50
查看次数

标签 统计

bash ×2

increment ×1

linux ×1

operator-keyword ×1

set ×1

shell ×1