P大仙 2018-11-15 13:56 采纳率: 100%
浏览 1509
已采纳

关于shell脚本编写从1、2、3、4中取三个随机的不重复数字所生成的数的问题?

我编写了一个shell脚本,内容如下:
#!/bin/bash
for a in {1..4}
do
for b in {1..4}
do
for c in {1..4}
do
if [ $a -ne $b -a $a -ne $c -a $b -ne $c ]
then
num=$(($a100+$b10+$c))
echo $num
fi
done
done
done
此脚本可以从1、2、3、4四个数字中取三个不重复的数字组成三位数。
但,偶然一次,将echo $num写至if语句外,发现结果错误,内容如下
#!/bin/bash
for a in {1..4}
do
for b in {1..4}
do
for c in {1..4}
do
if [ $a -ne $b -a $a -ne $c -a $b -ne $c ]
then
num=$(($a100+$b10+$c))
fi
echo $num
done
done
done
此两个脚本执行的结果不同,想提问这是由什么原因造成的,if不是只有判断的能力嘛?小白一枚,希望大神指导。

  • 写回答

1条回答

  • g2632667721 2018-11-17 08:07
    关注

    ##首先很乐意回答你这个问题 ,其次,这个问题并不难,这要稍加细心就能解答

    回答如下

    ##if是只有判断能力没错,你可能对程序执行顺序不是很清楚,
    ##就拿a=1,b=3,c=1来说吧,
    ##显然a=c,更不会执行if语句,但$num还是要输出的啊,第二个脚本是这样写的,
    ##只能输出上一次$num被改变的值124。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64