从文件中扣除,直到值小于或等于20

时间:2016-11-16 15:51:58

标签: bash

我只是想为此寻找一些指导,因为我现在已经陷入困境并一再做同样的事情。 " blah.txt"文件将是位置参数,然后我想继续扣除" 20"从它直到它小于或等于20.我还必须使用文件名的位置参数...

 #!/bin/bash

 value=$(cat "blah.txt")


 if [ "$value" -ge 20 ]

 then

    until [ "$value" -le 20 ]; do
            echo $((value - 20)) > $1

    done

 fi

2 个答案:

答案 0 :(得分:0)

在我看来,你只是回应$value - 20,但实际上并没有存储它。基本上我们假设开头的值是100。然后你继续在屏幕上写100-20 = 80,但实际上从未减少变量的值。

答案 1 :(得分:0)

假设value="100"。然后你可以在算术表达式中使用它,如下所示:

until [ $value -le 20 ]; do
  echo $value
  (( value -= 20 ))
done

输出

100
80
60
40

如果要从列表中排除100,请将算术表达式移至循环条件,例如:

until (( (value -= 20) <= 20 )); do
  echo $value
done

输出

80
60
40

如果您想加入20,请将-le(小于或等于)替换为-lt(较小),将<=替换为<。< / p>