本文主要是介绍一起重新开始学大数据-Linux篇-Day31-shell脚本(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一起重新开始学大数据-Linux篇-Day31-shell脚本(1) |
Shell 介绍 |
前言:
计算机只能认识(识别)机器语言(0和1),如(11000000 这种)。但是,我们的程序猿们不能直接去写01这样的代码,所以,要想将程序猿所开发的代码在计算机上运行,就必须找"人"(工具)来翻译成机器语言,这个"人"(工具)就是我们常常所说的编译器或者解释器。
编译和解释型语言区别
1. 编程语言分类
- 编译型语言:
程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++
- 解释型语言:
程序不需要编译,程序在运行时由解释器翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Python/JavaScript/ Perl /ruby/Shell等都是解释型语言。
- 总结
编译型语言比解释型语言速度较快,但是不如解释型语言跨平台性好。如果做底层开发或者大型应用程序或者操作系开发一般都用编译型语言;如果是一些服务器脚本及一些辅助的接口,对速度要求不高、对各个平台的兼容性有要求的话则一般都用解释型语言。
2. shell 简介
- 一句话概括
简单来说就是将需要执行的命令保存到文本中,按照顺序执行。它是解释型的,意味着不需要编译。
- 准确叙述
若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本
shell操作linux的桥梁 |
创建:
后缀为.sh的文件
编写:
头部注释为#!/bin/sh或者#!/bin/bash(注释可写可不写,建议写上)
运行:
**1.通过sh命令执行**
例如:sh helloworld.sh
2.通过bash命令执行
例如:bash helloworld.sh
3.通过把文件修改为可执行的文件然后通过./文件命令.sh来执行
例如:./helloworld.sh(必须在当前目录下)
定义和初始化
格式
变量名称=值
例如:
x=10 "abc edefg"
注意:
等号两边不能有空格
使用:通过$区分变量还是一句话
格式1:
$变量
格式2:
${变量}
注意:
格式1,会把$后所有相连内容看做一个变量
格式2,${}表示值引用{}之中的内容分,对相连的内容做了一个区分
$0…$n:表示接收外部参数(执行脚本时,传递的参数)
格式:
$下标
注意:
\$0永远表示脚本名称(所以脚本名称不算数,\$0也不算第一个参数)
下标大于一位数只能使用\${}获取参数,因为\$下标只把第一位数据看做下标
$*获取所有参数
$#获取所有参数个数
引号:
单引号:安原字符串输出
双引号:可以引用变量,拥有特殊含义的内容
拼接:连续获取变量
注意:
如果有多个引号,连续的形成一对
引号中使用其他引号,其他引号做字符串使用
字符串
获取长度
格式:
${#变量}
截取:
格式:
${变量:开始位置:长度}
注意:
${str::5}
:从0获取5个
${str:0}
:从0获取到末尾
替换单个
格式:
${变量/旧/新}
注意:
从左向右替换第一个
替换所有
格式:
${变量//旧/新}
注意:
替换不会再原字符上进行修改,想要修改原字符串只能从新赋值
删除
从头开始删除
${变量#表达式}
:匹配第一个删除
${变量##表达式}
:匹配最后一个删除
从尾开始删除
${变量%表达式}
:匹配第一个删除
${变量%%表达式}
:匹配最后一个删除
注意:
从未开始删除,表达式还是从左向右去写
删除不会再原字符上进行修改,想要修改原字符串只能从新赋值
运算符 |
算术运算符
bash不支持简单的数学运算,可以通过命令实现expr
格式1:
expr 值 + 值
注意:符号两边需要加上空格
格式2:
$[值+值]
比较运算符: > < >= <=…
格式:
$[值符号值](符号两边空格加不加无所谓)
注意:
比较的结果用1(true)和0(false)表示
逻辑运算符: &/and |/or !/not
例如:
#判断2>1结果
`echo $[2 > 1]
#反转2>1结果
echo $[!$[2>1]]
# 反转后面的结果2>1 and 2>3 false0
echo $[!$[$[2>1]&$[2>3]]]
echo $[2>1 & 2<1]
if
格式1:
if 判断条件
then判断为true执行的代码
fi
格式2:
if 判断条件
then判断为true执行的代码
else判断为false执行的代码
fi
格式3:
if 判断条件
then判断为true执行的代码
elif 判断条件
then判断为true执行的代码else判断为false执行的代码
fi
注意:
else可加可不加
判断条件的写法
[]:[]两边加空格,符号两边加空格并且符号前加转义符
可以使用字母
[[]]:[[]]两边加空格,符号两边加空格
可以使用字母
():弃用
(()):不需要加空格,但是不能使用字母
在使用变量时,不需要使用$
for
java格式:
for ((初始化变量;判断条件;控制语句))
do执行语句
done
python格式:
for 变量 in 结果集
do执行语句
done
结果集:
{开始..结束}
含头含尾,不能引用变量
seq 开始 结束
含头含尾
例如:获取1-100的奇数和偶数和
jsum=0
osum=0
for i in {1..100}
doif ((${i}%2==0))then#osum+=${i} 结果做了拼接 不是算术运算#osum=`expr ${i} + ${osum}`#osum=$[${i}+${osum}]let osum+=ielselet jsum+=ifi
done
echo 偶数和为:${osum}
echo 奇数和为:${jsum}
例如:敲七
#!/bin/env bash
#敲7
for i in {1..100}
doif((i%7==0))thenecho ${i}elif((i%10==7))thenecho ${i}elif((i/70==1))thenecho ${i}fi
done
案例:倒三角
[root@tt shell]# cat daosan.sh
#!/bin/env bash
l=8
for i in {1..9}
dostr="*"for k in `seq 1 $l `dostr=${str}" ""*"doneecho "${str}"let l-=1
done
[root@tt shell]# bash daosan.sh
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
注意:
使用let在计算时可以直接使用变量
|
|
|
|
|
|
|
|
|
上一章-Linux篇-Day30-克隆虚拟机(续)-修改ip,添加映射关系,配置ssh免密,启动模式
下一章-Linux篇-Day32-shell脚本(2)、时间、定时器、安装MySQL
听说长按大拇指👍会发生神奇的事情呢!好像是下面的画面,听说点过的人🧑一个月内就找到了对象的💑💑💑,并且还中了大奖💴$$$,考试直接拿满分💯,颜值突然就提升了😎,虽然对你好像也不需要,是吧,吴彦祖🤵! |
这篇关于一起重新开始学大数据-Linux篇-Day31-shell脚本(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!