[英]How to compare a variable with a variable minus a constant in a linux shell script?
我想比较一个变量与另一个变量减去linux shell脚本中的常量。
在cpp中,这将是这样的:
int index = x;
int max_num = y;
if (index < max_num - 1) {
// do whatever
} else {
// do something else
}
在shell中我尝试了以下内容:
index=0
max_num=2
if [ $index -lt ($max_num - 1) ]; then
sleep 20
else
echo "NO SLEEP REQUIRED"
fi
我也尝试过:
if [ $index -lt ($max_num-1) ]; then
...
if [ $index -lt $max_num - 1 ]; then
...
if [ $index -lt $max_num-1 ]; then
...
但这些版本不起作用。 你怎么正确地写这样的条件?
问候
便携(普通sh
),你可以说
if [ "$index" -lt "$((max_num-1))" ]; then
echo yes
fi
精简版
[ "$index" -lt "$((max_num-1))" ] && echo yes;
当被称为[
时, [
是test
程序,但需要关闭]
。 请注意变量所需的引用。 使用冗余和不一致的bash扩展cruft( [[ ... ]]
)时不需要引用。
在bash
,可以使用更易读的算术命令:
index=0
max_num=2
if (( index < max_num - 1 )); then
sleep 20
else
echo "NO SLEEP REQUIRED"
fi
严格遵守POSIX的等价物
index=0
max_num=2
if [ "$index" -lt $((max_num - 1)) ]; then
sleep 20
else
echo "NO SLEEP REQUIRED"
fi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.