如何在bashshell中使用新表达式重新初始化变量?
我试图在bashshell中执行以下操作。请告诉我怎么做如何在bashshell中使用新表达式重新初始化变量?,bash,shell,Bash,Shell,我试图在bashshell中执行以下操作。请告诉我怎么做 ramsize=4002 ramsize=ramsize/1000 您可以使用以下选项: $ v=2000 $ (( v/=1000 )) $ echo $v 2 就你而言: $ ramsize=4002 $ (( ramsize/=1000 )) $ echo $ramsize 4 您可以使用以下选项: $ v=2000 $ (( v/=1000 )) $ echo $v 2 就你而言: $ ramsize=4002 $
ramsize=4002
ramsize=ramsize/1000
您可以使用以下选项:
$ v=2000
$ (( v/=1000 ))
$ echo $v
2
就你而言:
$ ramsize=4002
$ (( ramsize/=1000 ))
$ echo $ramsize
4
您可以使用以下选项:
$ v=2000
$ (( v/=1000 ))
$ echo $v
2
就你而言:
$ ramsize=4002
$ (( ramsize/=1000 ))
$ echo $ramsize
4
使用浮动:
ramsize=4002
ramsize=$(echo "scale=4; $ramsize / 1000" | bc)
echo "$ramsize" ## Outputs 4.0020
使用浮动:
ramsize=4002
ramsize=$(echo "scale=4; $ramsize / 1000" | bc)
echo "$ramsize" ## Outputs 4.0020
您可以使用expr 像这样:
$ SIZE="4002"
$ DIV=$(expr "$SIZE" / "1000" )
$ MOD=$(expr "$SIZE" % "1000" )
$ echo $DIV
4
$ echo $MOD
2
回到你的例子:
$ ramsize=4002
$ ramsize=$( expr "$ramsize" / "1000" ) //ramsize = 4
根据konsolebox注释更新最后一条语句
修改前的最后一行:
$ramsize=$(“$ramsize”/“1000”)
修改后的最后一行:
$ramsize=$(expr“$ramsize”/“1000”)
您可以使用expr
像这样:
$ SIZE="4002"
$ DIV=$(expr "$SIZE" / "1000" )
$ MOD=$(expr "$SIZE" % "1000" )
$ echo $DIV
4
$ echo $MOD
2
回到你的例子:
$ ramsize=4002
$ ramsize=$( expr "$ramsize" / "1000" ) //ramsize = 4
根据konsolebox注释更新最后一条语句
修改前的最后一行:
$ramsize=$(“$ramsize”/“1000”)
修改后的最后一行:
$ramsize=$(expr“$ramsize”/“1000”)
$ramsize
有点不清楚要存储什么:整数除法(4)还是浮点除法(4.002)?有点不清楚要存储什么$ramsize
:整数除法(4)还是浮点除法(4.002)?*ramsize=$(“$ramsize”/“1000”))
。而且((ramsize=ramsize/1000))
更有效,尤其是((ramsize/=1000))
*ramsize=$($ramsize/1000))
当你引用vars时,它不起作用,我认为循环的C风格(())不是POSIX,你能解释一下为什么C风格更有效吗?可能是因为一切都是这样(计算和赋值)发生在单个作用域中。使用ramsize=$($ramsize/1000))
,$(())
仍会将扩展的值传递给将值赋给$ramsize
的函数。实际上,我没有发现我忘记了expr
,通过您的注释,我意识到有问题:)expr
对于算术来说基本上是过时的,因为它的所有函数(正则表达式匹配除外)都已通过$(…)
表达式并入POSIX外壳。*ramsize=$(“$ramsize”/“1000”)
。而且((ramsize=ramsize/1000))
更有效,尤其是((ramsize/=1000))
*ramsize=$($ramsize/1000))
当你引用vars时,它不起作用,我认为循环的C风格(())不是POSIX,你能解释一下为什么C风格更有效吗?可能是因为一切都是这样(计算和赋值)发生在单个作用域中。使用ramsize=$($ramsize/1000))
,$(())
仍会将扩展的值传递给将值赋给$ramsize
的函数。实际上,我没有发现我忘记了expr
,通过您的注释,我意识到有问题:)expr
对于算术来说基本上是过时的,因为它的所有函数(正则表达式匹配除外)都已通过$(…)合并到POSIX外壳中
expression.Hot执行以下操作ramsize=16000 freesize=3000 cachesize=8 ramsize=ramsize/1000 cachesize=freesize/1000Hot执行以下操作ramsize=16000 freesize=3000 cachesize=8 ramsize=ramsize/1000 cachesize=freesize/1000