Bash Division和Modulus

时间:2016-06-14 17:47:56

标签: bash sh

我遇到以下问题(尝试使用$,(),反引号`等多个varians来工作:

GetAmountOfFileBlocks()
{
        export DOC_BLOCKS=0
        DOC_BLOCKS= $(`expr $DOCS_AMOUNT / $CHUNK_AMOUNT`)
        DIVISOR=echo expr  $DOCS_AMOUNT % $CHUNK_AMOUNT
        if [ $DIVISOR -ne "0" ]
        then
                $DOC_BLOCKS=$DOC_BLOCKS+1;
        fi
}

在debug(with -x)中,它显示如下:

  
      
  • export DOC_BLOCKS = 0
  •   
  • DOC_BLOCKS = 0   ++ expr 193/64
  •   
  • DOC_BLOCKS =
  •   
  • 3 ./cnv_dm_assign_files_to_chunks.sh:line 87:3:找不到命令
  •   
  • DIVISOR =回波
  •   
  • expr 193%64
  •   

我需要得到一个数字来表示容纳给定除数所需的块数(在这个例子中,193/64意味着3和一个提醒,意味着我需要4个“块”用于我的目的。

1 个答案:

答案 0 :(得分:3)

这样的事情应该有效:

DOC_BLOCKS=$(( DOCS_AMOUNT / CHUNK_AMOUNT ))
REMAINDER=$(( DOCS_AMOUNT % CHUNK_AMOUNT ))

if [ "$REMAINDER" -gt "0" ]
then
  DOC_BLOCKS=$(( DOC_BLOCKS + 1 ))
fi