如何在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 $

我试图在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/=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