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是一个命令行解释器,它接受应用程序/用户命令

Linux提供Shell解析器

子shell概念

1.helloword编写

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

echo表示输出

执行方法

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

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

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

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

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

2.系统预定义变量

1) 常用系统变量

env 查看所有的环境变量

printenv 环境变量 产看环境变量

set 显示当前shell种所有变量

3.自定义变量

基本语法

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

变量定义规则

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

设置变量

进入bush

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

4.特殊变量

4.1$n 

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

4.2$#

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

4.3$*、&@

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

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

 4.4$?

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

5.运算符

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

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

写一个add.sh脚本

记得开启可执行 

6.条件判断

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

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

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

两个数进行比较

判断权限

判断文件类型

多级测试 三元运算符

7 .流程控制

7.1if判断 

1.单分支

if[ 条件判断 ]; then 程序

fi

或者

if[ 条件判断 ]

then

        程序

fi

 

2.多分支

if[条件表达式]

then

        程序

elif [条件判断式]

then

        程序

else

        程序

fi

多分支脚本

实现

7.2case语句

语法

case $变量 in

"值1”)

        相等就执行

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

"值2”)

        相等就执行

;;

*)

        兜底的方法

;;

esac

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

 

结果

7.3for循环

语法1

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

do 

        程序

done

举例

结果

 语法2

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

 

ps:$@和$*的区别

 

 不加引号

7.4While循环

语法

while [ 条件判断式 ]

do 

        程序

done

8.read读取控制台输入

read (选项) (参数)

选项

参数

 

 结果

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

9.函数

9.1系统函数

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

dirname文件绝对路径

9.2自定义函数

语法:

[ function ] funname[()]

{

        Action;

        [return int;]

}

举例

结果

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}'

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值