关于linux shell的问题

2024-11-22 14:10:01
推荐回答(1个)
回答1:

首先,已经有一个现成的命令rev用于做这个事情:

echo 345 | rev

 

其次,如果你是出于练习的目的,也可以自己写个函数:

#!/bin/bash
reverse()
{
   str="$1"
   len=${#str}
   for ((i=$len-1; i>=0; i--))
   do
       echo -n ${str:i:1}
   done
   echo
}
reverse 345

主要知识点就是bash的字符串处理方法:

${#string}  --> 获取字符串长度

${string:startPosition:length} --> 从startPosition开始截取length长度的字符串,其中字符位置从0开始(即第一个字符位置为0)

 

最后,才看到你要求用递归的方法,不得不重写一遍 -_- l|

 #!/bin/bash
reverse()
{
   str=$1
   len=${#str}   
   [ $len -eq 1 ] && echo $str && return
   echo -n ${str:len-1:1}
   reverse ${str:0:len-1}
}
reverse 345