【发布时间】:2020-01-02 08:00:49
【问题描述】:
我试图让坐标“x”在区间 [-1,1] 内随机移动。但是,我的代码有时有效,有时无效。我试过 ShellCheck 但它说“没有检测到问题!”。我是条件语句的新手,我用错了吗?
我在 linux 的 windows 子系统上运行它。我在 nano 上编辑它。由于我有一个脚本可以绘制 200 条这些“随机游走”,因此代码应该能够始终如一地工作,但我真的不明白为什么它不能。
这是我的代码:
x=0
for num in {1..15}
do
r=$RANDOM
if [[ $r -lt 16383 ]]
then
p=1
else
p=-1
fi
if [[ $x -eq $p ]]
then
x=$(echo "$x-$p" | bc )
else
x=$(echo "$x+$p" | bc )
fi
echo "$num $x"
done
我希望是这样的:
1 -1
2 0
3 1
4 0
5 1
6 0
7 1
8 0
9 1
10 0
11 -1
12 0
13 1
14 0
15 1
但通常的输出是这样的:
1 1
2 0
3 -1
4 0
5 -1
6 0
7 -1
(standard_in) 1: syntax error
8
(standard_in) 1: syntax error
9
(standard_in) 1: syntax error
10
(standard_in) 1: syntax error
11
(standard_in) 1: syntax error
12
(standard_in) 1: syntax error
13
(standard_in) 1: syntax error
14
(standard_in) 1: syntax error
15
总是在 -1 之后停止。
【问题讨论】:
-
这可能会有所帮助:How to debug a bash script?
-
仅供参考,如果
x == p您可以将 x 设置为零。
标签: bash if-statement conditional-statements