【Hadoop离线基础总结】linux的shell编程
linux的shell编程
基本了解
概述
Shell是一个用C语言编写的程序,通过shell用户可以访问操作系统内核服务,它类似于DOS下的command和后来的cmd.exe。Shell既是一种命令,也是一种程序设计语言
Shell Scripts是一种为Shell编写的脚本程序。Shell编程一般指Shell脚本编程,不是指开发Shell自身
Shell编程跟Java、PHP编程一样,只要有一个能编写代码的文本编辑器,和一个能解释执行的脚本编辑器就可以了
Linux的Shell种类众多,一个系统可以存在多个Shell,可以通过cat /etc/shells命令查看系统安装的Shell
Bash由于易用和免费,在日常工作中被广泛使用。同时,Bash也是大多数Linux系统默认的Shell格式
Shell脚本第一行约定俗成写 #!/bin/bash 或者 #!/bin/sh,用来解释所用的Shell内核执行方式
第一种方式:权限不足时,可以用 sh xxx.sh 或者 bash xxx.sh 来执行Shell脚本
第二种方式:用chmod命令给Shell脚本添加执行权限,再用./xxx.sh执行Shell脚本
Shell变量
- 格式
变量=值 比如:your_name="itcash.cn"
注意事项
变量名、等号和值之间不能有空格,同时,变量名的命名必须遵循如下原则:
1.首个字符必须为字母( a-z,A-Z )
2.中间不能有空格,可以使用下划线 “_”
3.不能使用标点符号
4.不能使用bash里的关键字(可以用help命令查看保留关键字)
ps. vi编辑模式显示行号 “:set nu”变量的使用
使用一个定义过的变量,在变量名前面加 $ 即可
your_name="itcash.cn"
echo $your_name
echo ${your_name}
#花括号是可加可不加的,加花括号是为了帮助解释器识别变量的边界
#已定义的变量可以被重新定义
#使用readonly命令可以将变量定义为只读变量,只读变量的值不能被改变
#使用unset命令可以删除变量,不能删除只读变量
readonly variable_name
unset variable_name
变量类型
局部变量:仅仅在当前的Shell交互窗口当中有效,其他的窗口无效
环境变量:所有的Shell窗口共享,都可以使用,范围最大,所有用户都可以共享
Shell变量:Shell程序设置的特殊变量,只在当前脚本中有效,其他脚本中无效Shell运算符
Shell和其他编程语言一样,支持包括:算数、关系、布尔、字符串等运算符
原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现。
例如:expr -> 一款表达式计算工具,使用它能完成表达式的求值操作
表达式和运算符之间要有空格,完整的表达式要被``包含,不是单引号
#!/bin/bash
a=4
b=20
#加法运算
echo `expr $a + $b`
#减法运算
echo `expr $a - $b`
#乘法运算 注意*号前面要加反斜杠\
echo `expr $a \* $b`
#除法运算
echo `expr $a / $b`
#运算的另外两种写法
c=$((1 + 2))
echo ${c}
d=$[2 - 1]
echo ${d}
流程控制
- 语法补充
关于if语句、for循环和while循环这里已经写过:【Linux基础总结】Shell 基础编程
这里只做一个case语句的补充
#!/bin/bash
#case语句案例
##根据输入的数字给予对应的回复
echo "请您输入一个1-4之间的整型数字"
echo "您输入的数字为:"
read aNum
case $aNum in
1)
echo "您输入的数字为1"
;;
2)
echo "您输入的数字为2"
;;
3)
echo "您输入的数字为3"
;;
4)
echo "您输入的数字为4"
;;
*)
echo "您输入的数字有误"
;;
esac
函数使用
概述:
所有函数在使用前必须定义,这意味着必须将函数放在脚本开始处,直到Shell解释器首次发现它时才可以使用格式:
[ function ] funname [()]{
action;
[return int;]
}
- 函数参数
#!/bin/bash
#定义我们自己的函数,并在Shell脚本中调用
function hello(){
echo "传入给我的第一个参数为"$1
echo "abc"
echo "给我传点参数"
}
#调用函数
hello $1
【Hadoop离线基础总结】linux的shell编程的更多相关文章
- 【Hadoop离线基础总结】oozie的安装部署与使用
目录 简单介绍 概述 架构 安装部署 1.修改core-site.xml 2.上传oozie的安装包并解压 3.解压hadooplibs到与oozie平行的目录 4.创建libext目录,并拷贝依赖包 ...
- Linux 下shell 编程学习脚手架
linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...
- 【Hadoop离线基础总结】Hue的简单介绍和安装部署
目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...
- 【Hadoop离线基础总结】impala简单介绍及安装部署
目录 impala的简单介绍 概述 优点 缺点 impala和Hive的关系 impala如何和CDH一起工作 impala的架构及查询计划 impala/hive/spark 对比 impala的安 ...
- 【Hadoop离线基础总结】Hive调优手段
Hive调优手段 最常用的调优手段 Fetch抓取 MapJoin 分区裁剪 列裁剪 控制map个数以及reduce个数 JVM重用 数据压缩 Fetch的抓取 出现原因 Hive中对某些情况的查询不 ...
- Linux下Shell编程
Linux的shell编程 1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每个用户执行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户 ...
- 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发
目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...
- 【Hadoop离线基础总结】Sqoop常用命令及参数
目录 常用命令 常用公用参数 公用参数:数据库连接 公用参数:import 公用参数:export 公用参数:hive 常用命令&参数 从关系表导入--import 导出到关系表--expor ...
- 【Hadoop离线基础总结】MapReduce增强(下)
MapReduce增强(下) MapTask运行机制详解以及MapTask的并行度 MapTask运行流程 第一步:读取数据组件InputFormat(默认TextInputFormat)会通过get ...
随机推荐
- 【three.js第五课】光线的添加和感光材料
材料分类: MeshBasicMaterial:基础网孔材料,一个以简单着色(平面或线框)方式来绘制几何形状的材料.MeshLambertMaterial:兰伯特网孔材料,一种非发光材料(兰伯特)的表 ...
- OpenAL试水
参考了https://wysaid.org/976.html. 这个博客给了一个EGE+OpenAL的demo和源代码.一开始没注意,博主也没有给EGE相关信息.会找不到EGE相关头文件,建议如果要二 ...
- Postman:Pre-request Script
Pre-request Script:前置处理,会在发出请求前执行,主要用在生成一些动态参数. 例如:api接口都会有签名校验,这个校验在我们api测试的时候很不方便,这里可以利用 postman 前 ...
- 爬虫与反爬相生相克,道高一丈魔高一尺,如何隐藏ID(附代码)
Python 反爬篇之 ID 混淆 作为爬虫的一方,如果知道了某个站点的数据自增 ID,那么就能轻而易举把整个站点都爬下来. 是不是有点耸人听闻,你去看很多大站例如油管.P 站等,他们都不会轻易把业务 ...
- Spring5:面向切面
静态代理 缺点:一个真实角色就会产生一个代理角色,代码量会翻倍! 场景:要在写好的实现方法上加入日志功能(公共功能),不要修改原代码 1:原代码 业务接口: package com.spring; p ...
- Java集合linkdList
LinkedList特有功能: A:添加功能 public void addFitst(Object e) public void addLast(Object e) B:获取功能 public Ob ...
- 44道JavaScript送命题
很久以前看过一个老外写的帖子,JavaScript Puzzlers!,直译就是JavaScript难题,里面列举了100道JavaScript选择题,大部分都是让人摸不着头脑的题目,需要仔细琢磨一番 ...
- 基于centos7搭建kvm
其他的和安装一般的系统没有差别 安装完成后. 1]使用ping www.baidu.com 2]修改静态ip,也可以不修改 3]下载brctlyum -y install bridge-utils 4 ...
- Iterator to list的三种方法
目录 简介 使用while 使用ForEachRemaining 使用stream 总结 Iterator to list的三种方法 简介 集合的变量少不了使用Iterator,从集合Iterator ...
- Spring Boot JPA中使用@Entity和@Table
文章目录 默认实现 使用@Table自定义表格名字 在JPQL Queries中重写表格名字 Spring Boot JPA中使用@Entity和@Table 本文中我们会讲解如何在Spring Bo ...