字符串处理练习
主要针对上一讲进行一个综合练习。
题目
变量string=“Bigdata process frame is Hadoop, Hasoop is an open source project”,执行脚本后,打印输出string字符串变量,并给出用户一下选项:
- 打印string长度
- 删除字符串中所有的Hadoop
- 替换第一个Hadoop为MapReduce
- 替换全部的Hadoop为MapReduce
用户输入数字1|2|3|4,可以执行对应项的功能,输入q|Q则退出交互模式。
思路
- 将不同的功能进行模块划分,并编写函数
function print_tips function len_of_string function del_hadoop function rep_hadoop_mapreduce_first function rep_hadoop_mapreduce_all
- 实现第一步所定义的函数
- 程序主流程设计
函数模块实现
string="Bigdata process frame is Hadoop, Hadoop is an open source project"
function print_tips
{
echo "**************************"
echo "(1) 打印string长度"
echo "(2) 删除字符串中所有的Hadoop"
echo "(3) 替换第一个Hadoop为MapReduce"
echo "(4) 替换全部的Hadoop为MapReduce"
echo "**************************"
}
function len_of_string
{
echo ${#string}
}
function del_hadoop
{
echo ${string//Hadoop/}
}
function rep_hadoop_mapreduce_first
{
echo ${string/Hadoop/Mapreduce}
}
function rep_hadoop_mapreduce_all
{
echo ${string//Hadoop/MapReduce}
}
# 测试
len_of_string
del_hadoop
rep_hadoop_mapreduce_first
rep_hadoop_mapreduce_all
主流程的实现
while true
do
echo "【string=$string】"
echo
print_tips
read -p "Pls input your choice(1|2|3|4|q|Q):" choice
case $choice in
1)
len_of_string
;;
2)
del_hadoop
;;
3)
rep_hadoop_mapreduce_first
;;
4)
rep_hadoop_mapreduce_all
;;
q|Q)
exit
;;
*)
echo "Error, input only in {1|2|3|4|q|Q}"
esac
done
完整脚本
string="Bigdata process frame is Hadoop, Hadoop is an open source project"
function print_tips
{
echo "**************************"
echo "(1) 打印string长度"
echo "(2) 删除字符串中所有的Hadoop"
echo "(3) 替换第一个Hadoop为MapReduce"
echo "(4) 替换全部的Hadoop为MapReduce"
echo "**************************"
}
function len_of_string
{
echo ${#string}
}
function del_hadoop
{
echo ${string//Hadoop/}
}
function rep_hadoop_mapreduce_first
{
echo ${string/Hadoop/Mapreduce}
}
function rep_hadoop_mapreduce_all
{
echo ${string//Hadoop/MapReduce}
}
# 主流程
while true
do
echo "【string=$string】"
echo
print_tips
read -p "Pls input your choice(1|2|3|4|q|Q):" choice
case $choice in
1)
len_of_string
;;
2)
del_hadoop
;;
3)
rep_hadoop_mapreduce_first
;;
4)
rep_hadoop_mapreduce_all
;;
q|Q)
exit
;;
*)
echo "Error, input only in {1|2|3|4|q|Q}"
esac
done