Linux 函数生成0到50之间的随机数
下面是我认为会创建一个0到50之间的随机数的代码(都包括在内) 第一个回波函数工作正常,它每次都显示一个随机数,但另一个回波函数的输出总是为零 函数生成0到50之间的随机数 职能:Linux 函数生成0到50之间的随机数,linux,bash,function,Linux,Bash,Function,下面是我认为会创建一个0到50之间的随机数的代码(都包括在内) 第一个回波函数工作正常,它每次都显示一个随机数,但另一个回波函数的输出总是为零 函数生成0到50之间的随机数 职能: rand() { echo $((RANDOM % 50)); } 您的代码: bash使用字符串 rand“var”“var1”将字符串var和字符串var1传递给函数 然后localvar1=$1将变量var1设置为局部变量,var1变量的值为var字符串(!) 然后localvar2=$2等于localva
rand() { echo $((RANDOM % 50)); }
您的代码:
- bash使用字符串
将字符串rand“var”“var1”
和字符串var
传递给函数var1
- 然后
将变量localvar1=$1
设置为局部变量,var1
变量的值为var1
字符串(!)var
- 然后
等于localvar2=$2
,它将localvar2=“var1”
变量值设置为字符串“var1”var2
无效。这等于local result=$((var1%var2))
。你不能在“字符串”上做微积分,它毫无意义localresult=$((“var”%“var1”)
- 只需将变量
的值传递给函数即可rand“$var”“$var1”
var1=1
将变量1设置为字符串1。当您进行算术展开时,$(…)
然后shell将字符串转换为数字,进行算术运算,然后将数字转换回字符串,以10为基数表示。您可以使用$
来“展开”变量,即获取它的值,即rand“$var”“$var1”
。请阅读关于该主题的在线资源,例如。我承认我没有深入研究bash源代码来了解如何实现它,但您可以给变量一个整数“属性”:declare-ivar
。然后,如果您尝试为它分配一个非整数值,它只会被分配为零。请参阅和。另请参见,特别是rand
函数的实现。
rand() { echo $((RANDOM % 50)); }