shell编程规范与变量

目录

一、shell脚本概述:

1、shell的类型:

2、shell脚本的作用:

3、shell脚本的组成结构:

5、shell的执行方式:

二、shell编程规范

1、标准输入、标准输出、标准错误输出

2、重定向:

3、变量

1、变量的属性:

2、变量的命名规范(自定义变量):

3、自定义变量:

4、变量赋值:a=1  b=2

5、变量的作用范围:

6、环境变量:

7、位置变量:


一、shell脚本概述:

shell是什么:shell介于人和计算机之间

人类有人类语言,计算机有计算机语言

翻译官:

shell是Linux系统中后台运行的一种特殊程序也可以理解 成一种特殊的软件,提供了用户与内核进行交互操作的 一种接口。(简单的说就是shell把人类的高级语言转换成二进制数据,让机器明白你的指令)

 过程:用户发出指令,通过shell转换成二进制语言被内核识别,内核再调度相对应的硬件,做出相关操作。

shell脚本

脚本语言:扩建语言,动态语言,也是编程语言中的一种。主要用来控制软件应用程序

都是以文本形式保存,只有在被调用的时候,文本代码才会被解释或者编译,也就是执行

1、shell的类型:

cat /etc/shells

/bin/sh  淘汰了

/bin/bash 现在常用的也是linux默认的shell  管理员

/sbin/nologin

/usr/bin/sh

/usr/bin/bash 现在常用的也是linux默认的shell  普通用户

/usr/sbin/nologin

/bin/tcsh 基于tcsh,提供更多的扩展功能

/bin/csh 类c语言shell

使用的shell:/bin/bash

默认就是bash

查看用户使用的shell

/etc/passwd 查看用户信息

创建脚本:

默认格式以.sh结尾,约定成俗的习惯,表示shell脚本

2、shell脚本的作用:
  1. 自动化运维(配合定时任务执行)
  2. 批量化、重复操作可以通过脚本执行,减少人工的重复输入
  3. 减轻了管理员的工作量
  4. 提高了处理文件的速度
  5. 避免配置出错

3、shell脚本的组成结构:
  1. 声明解释器
  2. #表示注释,注释掉的代码不会被执行,而且是按行执行
  3. 脚本当中的语句,linux的可执行命令都可以做为shell脚本执行
  4. 脚本中的语句按照从上到下,依次按行执行

5、shell的执行方式:
  1. 赋权执行 赋执行权限
  2. 不赋权执行 (脚本调试)

不赋权执行:

  1. sh 脚本名,sh只在当前环境运行,并不涉及子shell环境切换
  2. source 脚本名,source新建一个shell继续执行,而且所有的执行结果都会保存在这个shell里面

source命令:点命令.  如. test.sh

是对刚刚修改的文件进行初始化操作。(文件的内容都是shell语句,都是可执行的命令)。执行source可以不需要重启,使更改的内容直接生效

赋权直接chmod 777 test.sh

赋权执行:

先给权限

在当前目录可以直接执行   ./first.sh

不再当前目录执行用绝对路径   /opt/fiest.sh

需要执行的脚本不能放在用户的家目录

最好放在opt目录中

结合定时任务写,必须要绝对路径

二、shell编程规范
1、标准输入、标准输出、标准错误输出

标准输入:键盘,文件编号是0,我们正常执行的命令结果。ls、cd/opt

标准输出:显示器,显示输出的结果

标准错误输出:显示器,显示错误的输出结果

2、重定向:

echo 123 > 123.txt

重定向输出:

> 将标准输出的内容保存到指定文件,会覆盖文件中的原有内容

>> 也是重定向输出,会在文件内容的尾部追加,不会覆盖文件原有内容

重定向错误输出:

  1. 只有错误的才会被保存,覆盖

2>> 尾部追加

混合输出:

&> 会覆盖原有内容

&>> 行后添加

重定向输入:<

3、变量

怎么在shell脚本中定义变量,以及shell脚本的变量类型,shell的运算符

变量:面向对象

对象的名称(变量名)

对象的属性(变量的值,对象的描述信息

test=1

demo=2

1、变量的属性:

值的类型:

int:整数类型

string:字符串类型

布尔类型:true false

浮点类型:1.2.3.4.5.6

赋值声明方式:变量名=属性值

打印变量值:echo

2、变量的命名规范(自定义变量):
  1. 不要使用linux的系统命令作为变量名

如cd=ls

  1. 不要使用中文
  2. 不要使用特殊符号,作为变量名称的开头、

¥%#

可以使用_作为变量的开头

  1. 默认约定成俗规则:命名时用引文对照;学生 student,秒 second,计算机 computer
  2. 默认加上注释,变量名的引用保持前后一致,引用同一个变量前后保持一致
  3. 变量名不要以数字开头

工作中没有 a=1 b=2 格式

3、自定义变量:

在自定义变量中:” ” ‘ `

整数类型可以不加 ” 或者 ’     赋值为字符串类型,最好加上引号

再给变量赋值时,单引号和双引号一样。不影响变量的数值

` 命令替换,先执行反撇号当中的命令,然后再把命令执行的结果赋值给变量

打印变量时,引号的作用:  这里不涉及反撇号

打印变量双引号和单引号机制不同

echo “$a”  弱引用 原变量的值不同

echo ‘$a’   强引用  变量值将不再打印,就是$a 这个字符串。

避免出现歧义:保证一定能够正确的识别变量值

echo “$a” 

echo “{a}” 

4、变量赋值:
a=1  b=2

read命令的方式获取变量:

格式:read -p “提示信息” 变量名

灵活改变变量:

灵活赋值:

5、变量的作用范围:

默认情况下,新定义的变量只在当前的shell环境中生效。

想要整个shell环境都生效:要用全局变量

进入 /etc/profile 改配置文件

export 变量名=变量值

需要在一整套环境当中引用唯一且不需要变化的变量时,才会声明全局变量(属性唯一,且永远不变)

6、环境变量:

系统提前创建,用户也可以添加。设置用户的工作环境,配置系统行为,控制程序执行。

命令为什么能被识别:因为被事先添加到环境变量中了

用户级环境变量:

查看全局环境变量:env

查看用户环境变量:echo $PATH  就是特殊的全局变量 只对当前用户可见

预定义环境变量:系统预设,所有人可见,相当于全局变量

自定义的环境变量:特殊的全局变量,只对设置用户有效

添加全局变量:

常见的环境变量:

$USER 显示用户的名称

$HOME 用户的家目录

$PWD 表示当前所在的工作目录

$PATH 可执行用户程序的默认路径

7、位置变量:

又叫命令行参数,在脚本或者程序运行时,传递给他们的值,而且位置变量在脚本外部传递变量值。

$n 1-9:  $1 $2 $3 $4 $5...$9

10以上的用{}表示: ${10} ${11}

从小到大按顺序依次执行

预定义变量:

编程语言或者shell脚本解释器提供的,不能修改的。只能根据需要进行自动设置或者更新

$* 和 $@:表示命令或者脚本需要处理的参数

$* 和 $@ 不加引号的表现一致,都会把参数分行处理

$* 加上引号,会把参数当成一行处理 $*

$#:会显示需要处理的参数个数

$?:表示前一条命令或者脚本执行之后的返回状态码,只有返回0,表示执行成功,所有非0去全部表示执行失败。也可以用在函数中,作为return的返回值

——只能反馈最近的上一次的命令

echo $? 查看上一次命令操作是否成功

shell脚本整数的运算方式:

运算符号  + - * / %(取余)

        c=$(($a+$b))

        c=$((12+5))

        let c=12*5

        c=$(expr 12+5) c=$(expr 12\*5)

i++:i=$(($+1)) 每一次都会自增1,先赋值,再加1

1 i=1 i<10 i++  结果是1-9

i++ 先赋值,再加1,每次自增1

第一次:i=1

第二次:i=1+1=2

第三次:i=2+1=3

第四次:i=3+1=4

......

++i 先加,再赋值,也是每次增1

第一次:1=i

第二次:1+1=2=i

第三次:2+1=3=i

第四次:3+1=4=i

......

每次自加1:i++=$(($i=1))

每次自加2:i++=$(($i=2))

表示成:i+=2

i=0 i<100 i+=2   取0-100 自加2(每次取偶数)

i--:先赋值再减

--i:先减在复制

浮点数运算:

bc是shell自带的计算器

下面这种格式仅限正护士运算

awk

可以支持浮点运算,自动保留小数点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值