Shell编程基本指令

目录

shell概述

1.helloword编写

2.系统预定义变量

3.自定义变量

4.特殊变量

4.1$n 

4.2$#

         4.3$*、&@

4.4$?

5.运算符

6.条件判断

7 .流程控制

7.1if判断 

7.2case语句

7.3for循环

7.4While循环

8.read读取控制台输入

9.函数

9.1系统函数

9.2自定义函数

10.文本处理工具

10.1cut工具

10.2awk工具


shell概述

Shell是一个命令行解释器,它接受应用程序/用户命令

Shell编程基本指令_第1张图片

Linux提供Shell解析器

Shell编程基本指令_第2张图片

子shell概念

Shell编程基本指令_第3张图片

1.helloword编写

脚本要以#!/bin/bash开头指定解析器

echo表示输出

Shell编程基本指令_第4张图片

执行方法

sh+ 脚本的相对路径或绝对路径  ps:打开子shell来执行

bash+脚本的相对路径或绝对路径 ps:打开子shell来执行

. 命令.sh 启动sh文件         ps:当前shell执行

source 命令 跟sh和bash一样           ps:当前shell执行

直接执行,需要加权限,并且不能在命令的目录直接执行

Shell编程基本指令_第5张图片

2.系统预定义变量

1) 常用系统变量

env 查看所有的环境变量

printenv 环境变量 产看环境变量

set 显示当前shell种所有变量

Shell编程基本指令_第6张图片

3.自定义变量

基本语法

  1. 定义变量:变量名=变量值,注意,=号前后不能有空格
  2. 撤销变量:unset 变量名
  3. 声明静态变量:readonly 变量,注意:不能 unset

变量定义规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建 议大写
  2. 等号两侧不能有空格
  3. bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
  4. 变量的值如果有空格,需要使用双引号或单引号括起来。

设置变量

进入bush

Shell编程基本指令_第7张图片

 export 变量         设置成静态变量 ps两个bash进程里面变量不互通

4.特殊变量

4.1$n 

n表示未数字,$0表示该脚本的名称,$q-$9代表第一到第九个参数,10个以上的参数需要使用${10}

Shell编程基本指令_第8张图片

Shell编程基本指令_第9张图片

4.2$#

表示获取输入参数的个数,用于循环,或者判断是否正确

4.3$*、&@

$* 表示这个变量代表命令冲所有参数,$*把所有的参数看成一个整体

$@ 代表这个变量也代表命令种所有参数,不过$@把每个参数区别对待 可以循环遍历

Shell编程基本指令_第10张图片

Shell编程基本指令_第11张图片

 4.4$?

返回最后一次执行的命令状态,如果变量值未0,证明上一个正确,否则不正确

Shell编程基本指令_第12张图片

5.运算符

 expr a + b 每一个字符都需要空格才能识别 ,*需要做转义\

echo $((运算式))或$[运算式]

写一个add.sh脚本

Shell编程基本指令_第13张图片

记得开启可执行 

6.条件判断

-a表示逻辑与  -o表示逻辑或

test 条件表达式         0为真 1为假

Shell编程基本指令_第14张图片

[条件表达式]          ps:注意空格

两个数进行比较

Shell编程基本指令_第15张图片

判断权限

Shell编程基本指令_第16张图片

判断文件类型

Shell编程基本指令_第17张图片

多级测试 三元运算符

7 .流程控制

7.1if判断 

1.单分支

if[ 条件判断 ]; then 程序

fi

或者

if[ 条件判断 ]

then

        程序

fi

Shell编程基本指令_第18张图片

 Shell编程基本指令_第19张图片

2.多分支

if[条件表达式]

then

        程序

elif [条件判断式]

then

        程序

else

        程序

fi

多分支脚本

Shell编程基本指令_第20张图片

实现

Shell编程基本指令_第21张图片

7.2case语句

语法

case $变量 in

"值1”)

        相等就执行

;; //表示一个case值厉结束

"值2”)

        相等就执行

;;

*)

        兜底的方法

;;

esac

举例 [里面支持正则表达式] 

 Shell编程基本指令_第22张图片

结果

Shell编程基本指令_第23张图片

7.3for循环

语法1

for ((初始化;循环控制条件;变量变化))

do 

        程序

done

举例

Shell编程基本指令_第24张图片

结果

 语法2

for 变量 in 值1 值2 值3 ...
do
        程序
done

 

ps:$@和$*的区别

Shell编程基本指令_第25张图片

 Shell编程基本指令_第26张图片

 不加引号

Shell编程基本指令_第27张图片

7.4While循环

语法

while [ 条件判断式 ]

do 

        程序

done

Shell编程基本指令_第28张图片

8.read读取控制台输入

read (选项) (参数)

选项

参数

 

 结果

等三秒会自动执行,如果输入内容会提前执行

9.函数

9.1系统函数

basename [第一个参数] [第二个参数]         字符串切割,basename识别第一个参数最后一个/后面的值,第二个参数表示从外部去除第一个参数后面

dirname文件绝对路径

9.2自定义函数

语法:

[ function ] funname[()]

{

        Action;

        [return int;]

}

举例

Shell编程基本指令_第29张图片

结果

10.文本处理工具

10.1cut工具

cut [选项] 文本文件或管道

参数

 切割ip地址命令

 ifconfig ens33 | grep netmask | cut -d " " -f 10

10.2awk工具

awk [选项参数] '/pattern1/{action} /pattern1/{action}'

pattern 表示awk在数据上查找的内容

action 在找到的匹配执行命令

参数

 举例

awk -F : '/^root/{print $7}' 解释以 :分割 匹配root行在后面{}里面使用awl提供的print函数打印第7列

awk内置变量

切割ip

ifconfig ens33 | awk '/netmask/ {print $2}'

你可能感兴趣的:(大数据,bash,开发语言,linux)