当前位置:  技术问答>linux和unix iis7站长之家

rev_str=${rev_str}${temp_char}是什么意思?

    来源: 互联网  发布时间:2015-01-13

    本文导语:  echo "Enter string" read str len=`echo $str | wc -c` while test $len -ne 0 do     temp_char=`echo $str | cut -c$len`     rev_str=${rev_str}${temp_char}     len=`expr $len - 1` done echo $rev_str | >>echo "Enter string" ...

echo "Enter string"
read str
len=`echo $str | wc -c`
while test $len -ne 0
do
    temp_char=`echo $str | cut -c$len`
    rev_str=${rev_str}${temp_char}
    len=`expr $len - 1`
done
echo $rev_str

|
>>echo "Enter string"
输出:Enter string
>>read str
读入一个字串/字符
>>len=`echo $str | wc -c`
将输入的字串的长度赋值给变量len,以后引用该变量可以用$len
>>while test $len -ne 0
测试该变量len的数值是否为0而执行一些特定的操作(ne = Not Equal)
>>do
循环语句格式
>>    temp_char=`echo $str | cut -c$len`
截取字符变量str的子串,赋值给temp_char
>>    rev_str=${rev_str}${temp_char}
将两个变量$rev_str、$temp_char合并后赋值给变量rev_str
>>    len=`expr $len - 1`
计算:将数字变量len减1
>>done
循环语句结束
>>echo $rev_str
显示字符变量rev_str是值

|
给定一个字符串,比如zifuchuan作为read命令的输入.那么str的内容就是zifuchuan.
    紧接着的len=`echo $str|wc -c`一句是将字符串str的长度求出来并赋值给len;这为后面的循环给定了初始值.
    需要说明的是,read将结束输入的回车符也作为了一个字符.
while循环中每执行一次循环体就将len值减1;
第一次执行:len=10;test表达式为真,第一次时temp_char和rev_str变量都没有定义过,因而原值为空.
         执行temp_char=`echo $str | cut -c$len`后是将$str的左边第$len个字符赋值给temp_char,这一次是将回车符给了temp_char.
         执行rev_str=${rev_str}${temp_char}之后是将rev_str的值(字符串)与temp_char的值拼接起来赋值给rev_char.这一次是rev_char也为回车符;
         len减1后为9;
第二次执行:len=9;test也为真;temp_char为$str的左边第9个字符(即为字符n);
         "rev_str="一句之后rev_str为字符n;
         len减1后为8;
第三次执行:len=8;test为真;temp_char为字符a;
         rev_str为na;
         len为7;
如此继续执行,到len=1;
test为真;temp_char为字符z;
rev_str为nauhcufiz;
len=0;
再下一次test为假,退出;
显示$rev_str,即输出为nauhcufiz

实际上这个程序通过每次将len减1而每次取str的左边第len个字符,由最后一个字符开始,依此拼接并赋值给rev_char;
也就是将字符串(read时输入的)倒转输出,的确很有趣,我刚刚学Linux,觉得很好玩,朋友你也是吗?

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3