首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash脚本不使用4位数字

Bash脚本不使用4位数字
EN

Stack Overflow用户
提问于 2010-11-07 04:29:47
回答 3查看 1.9K关注 0票数 0

编辑:解决。谢谢大家!

我正在构建一个shell脚本,我被困在比较。我将其称为./myscript 1000,其中1000位于名为y的变量中。

问题是我需要这样做,所以如果我把任何4位数的数字传递给我的脚本,比如0001,它不会被if语句修改,但是当我调用我的脚本时,它基本上是告诉我0001和1是相同的东西。如何检查$y的大小以解决问题?

我尝试过回显y,当我把它们传递给我的脚本时,它确实显示了0001和1,但是我不知道如何单独保留任何4位数。

代码语言:javascript
复制
####CODE SNIPP
#NOT EVEN NEEDED, JUST FOR SHOW, need to think of 0000 to any 4 digit # 
#as different, but not sure how to do it.
if [ "$y" -ge 0000 ] && [ "$y" -le 9999 ]
then
        #DO NOTHING

#IF Y <= 50 && Y >= 0
elif [ "$y" -le 50 ] && [ "$y" -ge 0 ]
then
        #DO SOMETHING

#IF Y > 50 && Y <= 99
elif [ "$y" -gt 50 ] && [ "$y" -le 99 ]
then
        #DO SOMETHING
fi

有没有人知道我如何告诉我脚本0001和脚本1是两种不同的东西?我认为bash必须有一些东西来检查输入长度或其他东西,但我找不到任何东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-07 04:45:05

Bash支持查找存储在变量中的字符串的长度。

代码语言:javascript
复制
A=hello
echo ${#A}    # outputs "5"

您可以在if语句中使用该语句:

代码语言:javascript
复制
A=0001
if [ ${#A} -ne 4 ]; then
    # stuff done if not four digits
fi
票数 2
EN

Stack Overflow用户

发布于 2010-11-07 04:35:31

请注意,bash将将-eq、-ne、-lt、-le、-gt或-ge的任何参数视为数字。

如果要将它们视为字符串,请使用=和!=

代码语言:javascript
复制
$ test 1 = 2; echo $?
1
$ test 1 = 1; echo $?
0
$ test 1 = 001; echo $?
1
$ 

注意1和001是如何被认为是不同的。希望这能帮上你的忙。

如果你真的想知道什么是长的,试着使用wc

代码语言:javascript
复制
$ echo -n abc | wc -c
3
$ y=0001
$ echo -n $y | wc -c
4
$ test `echo -n $y | wc -c` -eq 4; echo $?
0
$ y=1
$ test `echo -n $y | wc -c` -eq 4; echo $?
1
$

最后一个例子返回1,告诉我们$y不长4个字符。

票数 1
EN

Stack Overflow用户

发布于 2010-11-07 05:08:14

我会用case识别4位数字

代码语言:javascript
复制
case $y in
([0-9][0-9][0-9][0-9])
    is_4_digits=yes;;
(*) is_4_digits=no;;
esac

您还需要做什么取决于您的要求--您可以在'(*)‘子句中做所有事情;我会在4位大小写中使用': OK’来表示这个情况是可以的:

代码语言:javascript
复制
case $y in
([0-9][0-9][0-9][0-9]) : OK;;
(*) # ... do all the other work here ...
    ;;
esac
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4116488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档