循环,if语句和$ {#var}跳过?

时间:2014-10-15 13:47:03

标签: shell if-statement

len=`echo "${#jday}"`

if [ "$len"==1 ];
then
new_jday=`echo "00 $jday" | awk '{print $1$2}'`
fi

在上面的代码中,我获得了len变量,它是循环中给定整数($ jday)中的位数。这些整数有1,2或3位数,对于那些只有1位数的整数,我想在前面加“00”(例如,如果整数是1,它应该显示为001)。但是,当我运行上面的代码时,所有整数都附加了00,我不明白为什么会这样。当我回复len时,我得到正确的长度(即1,2或3)。任何帮助深表感谢。

2 个答案:

答案 0 :(得分:0)

' =='用于比较字符串,尝试' -eq'

if [ "1"==1 ];
then
    echo "1";
fi

if [ "2"==1 ];
then
    echo "2";
fi

if [ "1" -eq 1 ];
then
    echo "1";
fi

if [ "2" -eq 1 ];
then
    echo "2";
fi

将输出:

1
2
1

答案 1 :(得分:0)

我没有通过if条件,而是选择使用printf函数将整数格式化为3位数字,如下所示;

new_jday = $(printf"%03d" $ jday)