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

本节主要内容

  1. shell脚本调试
  2. shell函数
  3. shell控制结构初步

1. shell脚本调试

当脚本出错时,需要对脚本进行调试,学会脚本调试是每个linux系统使用者必备技能。shell脚本调试无需任何额外的工具,只需要要在脚本文件前加-x选项即可,创建debug.sh文件,内容如下:

#!/bin/bash
#Filename: debug.sh
echo "scripting"
echo "debuging"
ls +

使用bash -x 命令进行脚本调试

root@sparkslave02:~/ShellLearning/Chapter12# bash -x debug.sh
+ echo scripting
scripting
+ echo debuging
debuging
+ ls +
ls: cannot access +: No such file or directory

-x选项将shell脚本每一行命令及执行结果打印输出,如此便能帮助开发人员快速定位到出错的脚本位置。如果代码量比较大或者脚本开发人员知道代码出错的大致位置,则可以使用set -x; set +x;命令进行局部调试,如

#!/bin/bash
#Filename: debug2.sh
for i in {1..6}
do
set -x
//set -x表示跟在该命令后的脚本输出调试信息
echo $i
//set +x表示从此处禁用调试
set +x
done
echo "Script executed"

上面的代码意味着,只会打印输出echo $i,具体调试信息输出如下:

[email protected]:~/ShellLearning/Chapter12# ./debug2.sh
+ echo 1
1
+ set +x
+ echo 2
2
+ set +x
+ echo 3
3
+ set +x
+ echo 4
4
+ set +x
+ echo 5
5
+ set +x
+ echo 6
6
+ set +x

除bash -x命令进行脚本调试之外,还可以在脚本的第一行添加-xv命令,使得脚本默认进行调试,例如:

//加-xv选项,使脚本执行时会打印输出调试信息
#!/bin/bash -xv
#Filename: debug.sh
for i in {1..6}
do
set -x
echo $i
set +x
done
echo "Script executed"
~                       

2. shell函数

同样,同c、c ++等编程语言一样,shell中可以定义函数,函数的定义格式如下

function fname()
{
   shell脚本语句;
}

vim命令创建functionDemo.sh脚本文件

root@sparkslave02:~/ShellLearning/Chapter12# vim functionDemo.sh

#定义一个函数fname
function fname(){
   #输出第一个参数
   echo $1
   #输出函数所在文件名
   echo $0
   #输出所有参数
   echo [email protected]
}
#将函数中传入两个参数
fname "arg1" "args"

执行结果:

root@sparkslave02:~/ShellLearning/Chapter12# ./functionDemo.sh
arg1
./functionDemo.sh
arg1 args

3. shell控制结构初步

同其它编程语言一样,shell也有自己的控制结构,包括for循环、while循环、until循环,if语句等。本小节先介绍for循环的使用,for循环的用法非常多,下面给出四个最为常用的for循环用法

(1)for i in $(seq 10)

root@sparkslave02:~/ShellLearning/Chapter12# vim forloop.sh
for i in $(seq 10)
do
echo $i
done

root@sparkslave02:~/ShellLearning/Chapter12# chmod a+x forloop.sh
root@sparkslave02:~/ShellLearning/Chapter12# ./forloop.sh
1
2
3
4
5
6
7
8
9
10

(2) for((i=1;i<=10;i++))

for((i=2;i<=10;i++))
do
echo $i
done

(3)for i in ls

root@sparkslave02:~/ShellLearning/Chapter12# vim forloop3.sh
for i in `ls`
do
echo $i
done

root@sparkslave02:~/ShellLearning/Chapter12# chmod a+x forloop3.sh
root@sparkslave02:~/ShellLearning/Chapter12# ./forloop3.sh
debug2.sh
debug.sh
forloop2.sh
forloop3.sh
forloop.sh
functionDemo.sh

(4)for i in ${arr[*]}

root@sparkslave02:~/ShellLearning/Chapter12# vim forloop4.sh
arr=(0 1 2 3)
for i in ${arr[*]}
do
echo ${arr[i]}
done

root@sparkslave02:~/ShellLearning/Chapter12# ./forloop4.sh
0
1
2
3

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-22 18:56: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大数据开发基础:第五节:vi、vim编辑器(二)

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

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大数据开发基础:第六节:vi、vim编辑器(二)(转载)

转自云栖社区: https://yq.aliyun.com/articles/60354?spm=5176.8251999.569296.36.siyXRn 周志湖 2015-08-25 21:23:00 浏览305 评论0 摘要: 本节主要内容 缓冲区的使用 文件的存盘与读盘 文本查找 文本替换 作者:周志湖 微信号:zhouzhihubeyond 网名:摇摆少年梦 1. 缓冲区的使用 在利用vim进行文本编辑时,编辑修改后的文本不会立即保存到硬盘上,而是保存在缓冲区中,如果没有把缓冲区里的文

linux运维、架构之路-shell编程入门

一.shell编程入门必备基础 1.vim编辑器的命令,vimrc设置 2.150个linux基础命令 3.linux中基础的系统服务crond,ssh网络服务,nfs,rsync,inotify,lnmp,sersync,nmap等 二.变量分类 1.全局变量 [[email protected] ~]# env HOSTNAME=nfs-server TERM=linux SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=172.19.5.146 49184

大数据开发基础知识

日志聚合与分析 日志聚合的作用就在于可以把来自不同服务器上不同应用程序产生的日志聚合起来,存放在单一的服务器上,方便进行搜索和分析.在日志聚合方面,已经有不少成熟的开源软件可以很好的满足需求.本文中要介绍的是 logstash,一个流行的事件和日志管理开源软件.logstash 采用了一种简单的处理模式:输入 -> 过滤器 -> 输出.logstash 可以作为代理程序安装到每台需要收集日志的机器上.logstash 提供了非常多的插件来处理不同类型的数据输入.典型的包括控制台.文件和 sys

转:Hadoop大数据开发基础系列:七、Hive基础

https://blog.csdn.net/hehe_soft_engineer/article/details/102820968 原文地址:https://www.cnblogs.com/ambdyx/p/11779609.html

Linux简介及常用命令使用5--linux shell编程入门

生成 测试数据的shell脚本 Vim data_create.sh rm -rf ./data.txttouch data.txtfor((i=0;i<2000;i++))dostr=',name';name=${i}${str}${i} #echo $nameecho $name>> data.txtdone echo 'show testdata'more data.txt chmod u+x data_create.sh 运行脚本 sh -x data_create.sh cro

Spark修炼之道——Spark学习路线、课程大纲

课程内容 Spark修炼之道(基础篇)--Linux基础(15讲).Akka分布式编程(8讲) Spark修炼之道(进阶篇)--Spark入门到精通(30讲) Spark修炼之道(实战篇)--Spark应用开发实战篇(20讲) Spark修炼之道(高级篇)--Spark源代码解析(50讲) 部分内容会在实际编写时动态调整.或补充.或删除. Spark修炼之道(基础篇)--Linux大数据开发基础(15讲). Linux大数据开发基础--第一节:Ubuntu Linux安装与介绍 Linux大数据