我只是想为此寻找一些指导,因为我现在已经陷入困境并一再做同样的事情。 " 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
答案 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>