Spark修炼之道(基础篇)——Linux大数据开发基础:第十四节:Shell编程入门(六)

本文主要内容

  1. case控制结构
  2. read命令
  3. 管道

1. case控制结构

参考:http://blog.csdn.net/dreamtdp/article/details/8048720
case控制结构语法格式:

case expression  in
    pattern1  )
        statements ;;
    pattern2  )
        statements ;;
    ...
esac

case控制结构较之于if条件判断,代码可读性更强,典型的应用场景是:编写的shell Script可能会跨越好几种平台,如Linux、FreeBSD、Solaris等等,而各平台之间,多多少少都有不同之处,有时候需要判断目前正在那一种平台上执行。此时可以利用uname命令与case控制结构搭配使用,具体代码如下:

root@sparkslave02:~/ShellLearning/Chapter14# vim case01.sh
 #!/bin/sh 

 #uname -s获取linux系统内核
 SYSTEM=`uname -s`

 case $SYSTEM in
     Linux)
         echo "My system is Linux"
         echo "Do Linux stuff here..."
     ;;
     FreeBSD)
         echo "My system is FreeBSD"
         echo "Do FreeBSD stuff here..."
     ;;
     *)
         echo "Unknown system : $SYSTEM"
         echo "I don't what to do..."
     ;;
 #case的反拼写法
 esac

root@sparkslave02:~/ShellLearning/Chapter14# chmod a+x case01.sh
root@sparkslave02:~/ShellLearning/Chapter14# ./case01.sh
My system is Linux
Do Linux stuff here...

2. read命令

read命令在shell脚本中很重要,学用这个命令来接受用户输入,直接上代码演示它的使用方法:

root@sparkslave02:~/ShellLearning/Chapter14# vim read.sh
#! /bin/bash
#-p(prompt) 选项表示,输出提示,本例中会输出"pleas input a number:",提示用输入
read -p "pleas input a number:" num[敲回车]
echo "the input number is $num"

root@sparkslave02:~/ShellLearning/Chapter14# chmod a+x read.sh 

root@sparkslave02:~/ShellLearning/Chapter14# ./read.sh
pleas input a number:12
the input number is 12

上面给出的代码在输完12后,敲回车后脚本将继续运行,对变量num输出。read命令还有一种用法是,当输出的字符满n个后脚本继续运行,具体使用如下:

root@sparkslave02:~/ShellLearning/Chapter14# vim read.sh
#! /bin/bash
#-n 4 选项表示,输入满4个字符后,接着执行后面的脚本
read -p "please input:" -n 4 num
echo "the input is $num"

root@sparkslave02:~/ShellLearning/Chapter14# vim read02.sh
root@sparkslave02:~/ShellLearning/Chapter14# chmod a+x read02.sh
root@sparkslave02:~/ShellLearning/Chapter14# ./read02.sh
please input:readthe input is read

有时候我们要输入密码等敏感字符,此时可以使用-s 选项,具体使用代码如下:

#! /bin/bash
#-s(secret) 选项,输入时不会显示在终端
read -p "pleas input the passwd:" -s password
echo "the input passwd is $password"

还有一种常用的用法是超时未输入则继续运行脚本,未输入的变量可以用默认的值

#! /bin/bash
#-t 2 表示两秒后未输入,则继续运行剩余脚本
read -t 2 inputStr
echo $inputStr

3. 管道

管理在linux操作系统中是一个非常重要的概念,在实际使用中使用非常广泛,管理命令的格式如下:

cmd1 | cmd2 | cmd3 

指的是cmd1的输出作为cmd2的输入,cmd2的输出又作为cmd3 的输入,如此串起来很像一个管道(pipe),例如下面这个命令常用来查看ssh服务是否启动:

//ps -e命令得到的进程信息输出作为 grep命令的输入,过滤出包含ssh的进程信息
root@sparkslave02:~/ShellLearning/Chapter14# ps -e | grep ssh
 1673 ?        00:00:00 sshd
 1794 ?        00:00:00 ssh-agent
时间: 2024-10-06 16:29:43

Spark修炼之道(基础篇)——Linux大数据开发基础:第十四节:Shell编程入门(六)的相关文章

Spark修炼之道(基础篇)——Linux大数据开发基础:第一节、Linux介绍、安装及使用初步

本节主要内容 Linux简史 Linux系统整体介绍 Ubuntu Linux安装 Linux使用初步 1. Linux简史 要讲述大名鼎鼎的Linux,必然要先从UNIX系统谈起,下面这幅图给出了Unix系统的进化图: 图片来源:http://baike.baidu.com/link?url=QfoqWtWGs-BjpnfEy_AUk7Bm3XHuf6JbN92HCOoUBfFfj8BuSDkbwmldtmUEmGRDUwqsQMIV4jCKHvdkSPr3Lq 从进化图中可以看到,目前所有的

Spark修炼之道(基础篇)——Linux大数据开发基础:第九节:Shell编程入门(一)

本节主要内容 shell编程简介 变量定义 常用特殊变量 1. shell编程简介 学习linux操作系统最让人着迷的事情莫过于shell脚本编程,这是因为如果要完成某些复杂的功能,单纯地通过GUI操作不可能达到,shell脚本可以直接与操作系统内核打交道,从而完成任意复杂的任务.shell有很多种,最常用的是Bash (Bourne Again Shell),它是Linux操作系统默认的shell环境. 在linux环境中,需要区分一下root用户与一般用户的命令行显示: //root用户与一

Spark修炼之道(基础篇)——Linux大数据开发基础:第四节:Linux文件系统(二)

本节主要内容 访问控制列表ACL 链接 压缩和归档文件 其他日常管理实用程序 1. 访问控制列表ACL 在实际使用使用过程中,可能linux系统自身权限控制不能满足要求,还需要进一步细化,此时可以用ACL( Access Control List )进行,它主要提供 owner,group,others 的 read,write,execute 权限之外的细部权限配置.它可以针对单一使用者,单一文件或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助. Ubuntu操作系统

Spark修炼之道(基础篇)——Linux大数据开发基础:第二节:Linux文件系统、目录(一)

本节主要内容 如何获取帮助文档 Linux文件系统简介 目录操作 访问权限 1. 如何获取帮助文档 在实际工作过程当中,经常会忘记命令的使用方式,例如ls命令后面可以跟哪些参数,此时可以使用man命令来查看其使用方式,例如 //man命令获取命令帮助手册 xtwy@ubuntu:~$ man ls 可以使用键盘上的 来显示下一行或上一行命令,也可以使用 进行上一页或下一页(屏)命令的查看,另外 空格鍵也可以用来显示下一屏的命令.想退出命令查看,直接按q鍵退出即可,也可以h鍵显示less命令列表(

Spark修炼之道(基础篇)——Linux大数据开发基础:第六节:vi、vim编辑器(二)

本节主要内容 缓冲区的使用 文件的存盘与读盘 文本查找 文本替换 作者:周志湖 微信号:zhouzhihubeyond 网名:摇摆少年梦 1. 缓冲区的使用 在利用vim进行文本编辑时,编辑修改后的文本不会立即保存到硬盘上,而是保存在缓冲区中,如果没有把缓冲区里的文件存盘,原始文件不会被更改.vim在打开文件时将文本内容读到缓冲区中,在进行文本编辑时,修改的文本保存在缓冲区,此时硬盘上的原文件不变.下面让我们来演示一下缓冲区的使用. 假设采用vim 同时打开两个文本文件: root@ubuntu

Spark修炼之道(基础篇)——Linux大数据开发基础:第三节:用户和组

本节主要内容 理解用户和组的概念 用户管理 组管理 权限分配 1. 理解用户和组的概念 在第一讲中我们提到,linux是一种多任务.多用户的操作系统,在讲ls -l命令行我们看到如下文件详细信息: root@ubuntu:/home/xtwy# ls -l total 48 drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Desktop drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Documents drwx

Spark修炼之道(基础篇)——Linux大数据开发基础:第五节:vi、vim编辑器(一)

本节主要内容 vim编辑器的三种模式 移动光标 输入模式 修改文本 作者:周志湖 微信号:zhouzhihubeyond 网名:摇摆少年梦 1. vi编辑器的三种模式 学会使用vi编辑器是学习linux系统的必备技术之一,因为一般的linux服务器是没有GUI界面的,linux运维及开发人员基本上都是通过命令行的方式进行文本编辑或程序编写的.vi编辑器是linux内置的文本编辑器,几乎所有的类unix系统中都内置了vi编辑器,而其它编辑器则不一定,另外很多软件会调用vi编辑进行内容编写,例如cr

Spark修炼之道(基础篇)——Linux大数据开发基础:第七节:进程管理

本节主要内容 进程管理简介 进程管理常用命令 计划任务 1. 进程管理简介 (1)进程概念 进程是操作系统中非常重要的一个概念,进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程,例如: //ps命令列出当前所有对应当前用户的活动进程 xtwy@ubuntu:~$ ps PID TTY TIME CMD 2087 pts/0 00:00:00 bash 2105 pts/0 00:00:00 ps xtwy@u

Spark修炼之道(基础篇)——Linux大数据开发基础:第八节:网络管理

本节主要内容 ifconfig命令 网络配置 其它常用网络管理命令 1. ifconfig命令 ifconfig命令主要用于配置网络接口,如果不加任何参数,则ifconfig命令用于查看当前所有活动网络接口的状态信息,例如: 图中的eth0表示活动的以太网接口,对应的描述信息中给出了网络的整体状况信息包括网络类型.MAC地址.IP地址.子网掩码等等,lo表示本地环回网络地址.从图中可以看到,所有的网络类型都是inet即基于TCP/IP协议的网络. 目前支持的主流协议包括: inet (TCP/I