Shell编程规范与变量

目录

一、什么是Shell

二、Shell脚本应用场景

1、重复性操作

2、交互性任务

3、批量事务处理

4、服务运行状态监控

5、定时任务执行

​三、重定向与管道操作

交互式硬件设备

四、变量的作用

变量名

变量值

变量名的规范

变量的类型

自定义变量

特殊变量

五、强引用和弱引用

打印变量 

六、全局变量

优点

副作用

七、环境变量

八、位置变量

九、预定义变量


一、什么是Shell

Shell就是解释器、编译器、翻译官   与内核进行沟通

应用程序  就是把代码翻译成二进制,让内核进行处理

Shell是一个特殊的应用程序,介于操作系统和用户之间,扮演的是命令解释器的角色,用户输入操作指令,Shell解释,传递给内核,内核执行完同Shell返回,给用户一个执行结果,介于系统内核与用户之间

bash也是目前Linux版本默认的shell

Shell——脚本语言——按行执行,顺序执行,动态语言,也是编程语言的一种,用来控制软件应用程序,脚本通常都是以文本的形式保存,只在被调用的时候才进行解释或者编译(python也是)

二、Shell脚本应用场景

1、重复性操作

2、交互性任务

3、批量事务处理

4、服务运行状态监控

5、定时任务执行

sh   [脚本名]                                

bash  [脚本名]

source  [脚本名]

./  [脚本名]   

sh  bash  source  不需要给执行权限调试阶段可以不赋权执行

./    必须给执行权限

但是一旦正式上线,必须给执行权限

 三、重定向与管道操作

交互式硬件设备

标准输入

从该设备接收用户输入的数据

标准输出

通过该设备向用户输出数据

标准错误

通过该设备报告执行出错信息

重定向输入            <      从指定的文件读取数据

重定向输出            >      将输出结果保存到指定的文件(覆盖原有内容)

                               >>    将输出的结果追加到指定文件的尾部

重定向错误输出     2>     将错误信息保存到指定文件(覆盖)

                              2>>   将错误信息追加到指定文件

混合输出                &>     将标准输出、标准错误的内容保存到同一文件中(覆盖)

管道操作符合“|”

将左侧的命令结果输出结果,作为右侧命令的处理对象

四、变量的作用

用来存放系统和用户需要使用的特定参数(值)

变量名

使用固定的名称,由系统预设或用户定义

变量值

能够根据用户设置、系统环境的变化而变化

打印变量的值,前面要加$echo 、$a  引用变量也要加$

变量名的规范

1、不要使用系统的命令作为变量名

2、不要使用中文

3、不要使用特殊符号开头例如:#  ¥  %  &  *等,但是可以使用_下划线开头

4、要有注释

变量的类型

整数    int

字符串  string

布尔   真假 0 1

浮点   1.1   2.2

自定义变量

由用户自己定义、修改和使用

特殊变量

环境变量、只读变量、位置变量、预定义变量

只读变量:readonly(重启即消失)

五、强引用和弱引用

在赋值变量时,单引号和双引号无区别

打印变量 

双引号:弱引用,还是变量原本的值

单引号:强引用,就不再是原来变量的值,变为$b,变成字符串

反撇号:提取命令的执行结果,然后在给变量赋值

 read —p "提示信息:” num(名称)

六、全局变量

所有的用户自定义变量在所有的子shell环境

export  [字符]=[变量]       全局变量设置(临时定义)

在/etc/profile 中可以永久设置全局变量

优点

1、全局范围

2、持久性

3、共享性

副作用

如果相同的变量名,之间引用全局变量,会导致不确定性,在脚本中一般使用自定义变量

 i++ for i= i < =10 i++ 先赋值,再加

i-- for i=10 i >=1 i--i=10

++i 先加,再赋值

--i 先减,再赋值

七、环境变量

系统自带,设置工作环境,配置系统行为,传递信息,控制程序的执行

这些环境变量,所有用户都可以使用,都可见

八、位置变量

命令行参数,运行脚本或程序时,传递给他们的值,位置变量用于将外部数据传递给脚本执行

$n

传参的顺序,从左到右

$0  命令本身

$1-9

$(10)

九、预定义变量

通常是编程语言或者脚本解释器提供的,根据需要自动设置和更新,不能修改

$#:表示命令或脚本要处理的参数个数

$*    $@

加了双引号的$*会把内容处理在一行,加了双引号的$@ 会把内容分行处理

不加引号的$*也会分行处理,不加引号的$*和$@变现一致,加了引号,$*会把参数处理在一行

$?

判断上一条是否执行成功,成功,返回0,所有的非0返回值都是失败

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值