【问题标题】:Function to produce random number between 0 to 50生成 0 到 50 之间的随机数的函数
【发布时间】:2019-05-22 12:17:26
【问题描述】:

下面是我认为会创建一个介于 0 到 50 之间的随机数的代码(都包括在内)

#!/bin/bash
var1=51
var=$RANDOM
echo $var
function rand(){
    local var1=$1
    local var2=$2
    local result=$(( var1 % var2 ))
    echo $result
}   
rand "var" "var1"

第一个 echo 函数工作正常,它每次都显示一个随机数,但另一个 echo 函数总是给出零输出

【问题讨论】:

标签: linux bash function


【解决方案1】:

产生0到50之间随机数的函数

功能:

rand() { echo $((RANDOM % 50)); }

到你的代码:

  • bash 使用字符串
  • rand "var" "var1" 将字符串 var 和字符串 var1 传递给函数
  • 然后local var1=$1 将变量var1 设置为局部变量,var1 变量的值是var 字符串(!)。
  • 那么local var2=$2等于local var2="var1",它将var2变量值设置为字符串“var1”。
  • local result=$(( var1 % var2 )) 无效。这等于local result=$(( "var" % "var1" ))。你不能对“字符串”进行微积分,这是没有意义的。
  • 只需将变量rand "$var" "$var1" 的值传递给函数即可。

【讨论】:

  • 我们可以将整数传递给 bash 中的函数
  • 本身没有整数。有弦。 “整数”是一个字符串(即,它以 10 为基数表示)。 var1=1 将 var1 设置为字符串 1。当您进行算术扩展 $(( ... )) 时,shell 会将字符串转换为数字,进行算术运算,然后将数字转换回字符串,以 10 为基数表示。您可以“扩展”变量使用$,即。得到它的价值,即。 rand "$var" "$var1"。请阅读有关该主题的在线资源,例如。 this.
  • 我承认没有深入研究 bash 源代码来了解它是如何实现的,但是您可以给变量一个整数“属性”:declare -i var。然后,如果您尝试为其分配一个非整数值,它只会被分配为零。
猜你喜欢
  • 2014-04-11
  • 2011-08-10
  • 2011-04-29
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
相关资源
最近更新 更多