Bash中一系列数字的用例 [英] Using case for a range of numbers in Bash

查看:69
本文介绍了Bash中一系列数字的用例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在Bash(在Linux中)中使用case进行以下操作.

I am trying to do the following using case in Bash (in Linux).

如果X在460到660之间,则输出X信息.

If X is between 460 and 660, output X information.

如果X在661和800之间,请执行其他操作.

If X is between 661 and 800, do something else.

等等.

现在这就是我所拥有的:

Right now this is what I have:

case $MovieRes in
    [461-660]*) echo "$MovieName,480p" >> moviefinal ;;
    [661-890]*) echo "$MovieName,720p" >> moviefinal ;;
    [891-1200]*) echo "$MovieName,1080p" >> moviefinal ;;
    *) echo "$MovieName,DVD" >> moviefinal ;;
esac

但是,以某种方式,480p,720p或1080p中的许多将以DVD结尾.变量$MovieRes是一个简单的列表,为每行显示1到1200之间的数字.case根据值决定要应用的大小写".

But somehow many of the ones that are 480p, 720p or 1080p are ending with DVD instead. The variable $MovieRes is a simple list that shows, for each line, a number between 1 and 1200. Depending on the value, case decides which "case" to apply.

我想知道如何实际使用case完成此操作,因为在处理此类范围时会有些混乱.

I would like to know how to actually use case to accomplish this since it is a bit confusing when dealing with ranges like this.

推荐答案

在bash中,您可以使用arithmetic expression:((...))

In bash, you can use the arithmetic expression: ((...))

if ((461<=X && X<=660))
then
    echo "480p"
elif ((661<=X && X<=890))
then
    echo "720p"
elif ((891<=X && X<=1200))
then
    echo "1080p"
else
    echo "DVD"
fi >> moviefinal

这篇关于Bash中一系列数字的用例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆