今天做一个试题就是调用函数的问题,题意如下:

执行shell脚本,打印一个如下的水果菜单:

1.apple

2.pear

3.banana

4.cherry

当用户输入对应的数字选择水果的时候,告诉他选择的水果是什么,并给水果单词加上一种颜色(随意),要求用case语句实现。

解答如下:

  颜色函数:

[root@m01 04 07:29:40]# cat 4-3.sh
#!/bin/bash
red="\033[31m"  #定义红色
green="\033[32m"  #定义绿色
yellow="\033[33m"  #定义黄色
blue="\033[34m"  #定义蓝色
tail="\033[0m"    #定义颜色结尾
color(){        #定义颜色函数 
case "$1" in
red)
  echo -e "${red}$2${tail}"
  ;;
green)
  echo -e "${green}$2${tail}"
  ;;
yellow)
  echo -e "${yellow}$2${tail}"
  ;;
blue)
  echo -e "${blue}$2 ${tail}"
  ;;
*)
  echo "Usage:$0 arg1 arg2"
esac
}
color $*  #调用函数

主要脚本,输出结果:

[root@m01 04 07:31:05]# cat 4-2.sh
#!/bin/bash
. /server/scripts/04/4-3.sh     #调用另外一个脚本
cat<<EOF
1.apple
2.pear
3.banana
4.cherry
EOF
usage(){
echo "Usage:$0 {1|2|3|4}"
}
#. /server/scripts/04/4-3.sh
selectfruits(){
read -p "pls select fruits nums:" num
case "$num" in
1)
color red apple     #由4-3.sh来提供参数值,父子函数
;;
2)
color green pear
;;
3)
color yellow banana
;;
4)
color blue cherry
;;
*)
usage
exit 1
esac
}
main(){
#if [ $# -ne 1 ];then
# usage
#fi
selectfruits
}
main $*

得到结果

关于shell中函数调用的理解的更多相关文章

  1. Linux Shell 之 Shell中的函数调用

    说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很“自然”的错误,也让我吃了不少的苦头,所以总 ...

  2. 【Shell学习笔记3》实践项目自动部署脚本】shell中获取返回值、获取当前sh文件路径

    原创部分: 1.获取返回值 #This is a shell to Deploy Project #!/bin/bashcheck_results=`ps -ef | grep "java& ...

  3. 理解 Linux shell 中的一个方言:2>&1

    理解 Linux shell 中的一个方言:2>&1  2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...

  4. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  5. shell中读写mysql数据库

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

  6. c语言中函数调用的本质从汇编角度分析

    今天下午写篇博客吧,分析分析c语言中函数调用的本质,首先我们知道c语言中函数的本质就是一段代码,但是给这段代码起了一个名字,这个名字就是他的的这段代码的开始地址 这也是函数名的本质,其实也就是汇编中的 ...

  7. shell中的大括号和小括号

      1.shell中的大括号和小括号   1.${var} 2.$(cmd) 3.() 和 {} 4.${var:-string}, ${var:+string},  ${var:=string}, ...

  8. 脚本乐园 Shell中命令行选项和参数的处理

    在Linux的Shell中怎样处理tail -n 10 access.log这样的命令行选项呢?这是被别人问起的一个问题,好好学习了一下,进行总结如下:在bash中,可以用以下三种方式来处理命令行参数 ...

  9. Linux shell中的一个问题 ${}带正则匹配的表达式

    目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解.后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式.故记录下来,以备后来查阅. 问题: 在某 ...

随机推荐

  1. Centos 7.2 安装与配置JDK8

    系统环境:centos7安装方式:rpm安装软件:jdk-8u25-linux-x64.rpm下载地址:http://www.oracle.com/technetwork/java/javase/do ...

  2. kubeadm安装集群系列-2.Master高可用

    Master高可用安装 VIP负载均衡可以使用haproxy+keepalive实现,云上用户可以使用对应的ULB实现 准备kubeadm-init.yaml文件 apiVersion: kubead ...

  3. 关于MYSQL使用过程中的一些错误总结

    一,java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 导致这个问题有很多种情况,我暂时遇到的是:未在lib下导入jar包. 这个链接是各个 ...

  4. [转帖]云服务器使用CentOS、Debian、Ubuntu的哪个版本

    云服务器使用CentOS.Debian.Ubuntu的哪个版本 2018-09-09 12:32:45作者:ywnz稿源:云网牛站 https://ywnz.com/linuxyffq/2986.ht ...

  5. PHP中的闭包

    1.语句结构 在PHP中,由于存在函数内部不能访问全局作用的,所以就需要一种可以引入上一级作用域的语法结构,这种就是 function () use () {} 将需要引入到这个函数作用于内的变量写入 ...

  6. Linux:shift 命令可以将参数依次向左移动一个位置

    在脚本中,命令行参数可以依据其在命令行中的位置来访问.第一个参数是 $1 ,第二个参数 是 $2 ,以此类推. 下面的语句可以显示出前3个命令行参数: echo $1 $2 $3 更为常见的处理方式是 ...

  7. MFC控件使用大全

    https://blog.csdn.net/daoming1112/article/details/54698113

  8. PAT B1048 数字加密 (20)

    AC代码 #include <cstdio> #include <cstring> #include <algorithm> #include <iostre ...

  9. STM32的堆与栈与编译信息查看

    STM32的堆与栈与编译信息查看 因为一个项目中使用malloc函数动态分配内存400多个字节,返回为0,分配失败.查找失败原因,为堆空间不足分配导致.查看堆和栈分别设置了2K,按正常情况看应能满足分 ...

  10. 牛客 158D a-贝利福斯数

    将所有形如ax+1的数称为a-贝利福斯数,其中x是正整数.一个a-贝利福斯数是a-贝利福斯素数,当且仅当它不能被分解成两个a-贝利福斯数的积.现在给出a,n,问有多少个 ≤ n的a-贝利福斯数可以被分 ...