shell编程规范与变量

前言:什么是shell,shell的作用是什么

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

常见的shell编辑器

cat  /etc/shells      //linux中查看本机shell种类

/bin/sh 已淘汰

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

/usr/bin/sh

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

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

/bin/csh:类C语言shell

shell 脚本的用途和应用场景

用途:

  • 自动化运维
  • 批量化重复操作,可以通过脚本执行,减少人工重复输入
  • 减轻了管理员的工作量
  • 提高了处理文件的速度
  • 避免配置出错

应用场景:

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行

shell脚本的构成

vim first.sh
#!/bin/bash
#声明shell编辑器,就是使用bash5,可以不加。

cd /boot

echo "当前目录位置:"

pwd


#可执行语句:脚本当中内容执行顺序是从上到下,依次按行
执行



1.声明解释器

2.#表示注释,注释掉当前的代码不会被执行,而且是按行进行注释

3.脚本当中的语句,Linux的可执行命令都可以作为shell脚本的语句。

4.脚本当中的语句按照从上到下,依次按行执行。

shell的执行方式:

1.赋权执行(赋予执行权限)

2.不赋权执行(脚本测试)

shell脚本运行

source 脚本名

source 命令:点命令

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

sh:只在当前环境运行,并不涉及子shell环境的切换

source:会新建一个shell继续执行。而且所有的执行结果都会保存在shell里面。

赋权执行:

chmod 777

./first.sh

.表示当前目录,若不在当前目录要写绝对路径

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

最好放在opt目录中

结合定时任务执行,必须要有绝对路径。

标准输入,标准输出,标准错误输出

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

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

标准错误输出:显示器,显示错误的输入信息。(LS)

 重定向操作的符号用法

类型操作符用途
重定向输入<从指定的文件中读取数据,不是从键盘输入读取
重定向输出>将输出的结果保存在指定的文件中(覆盖原文件)
>>将输出的结果追加在指定文件的末尾
重定向错误输出2>将错误信息保存在指定的文件(覆盖原文件内容)
2>>将错误信息追加在指定文件的末尾
混合输出&>将标准输出和标准错误信息都保存在同一个文件中

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

变量:面向对象,对象的名称和属性

变量名

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

变量的属性:值的类型

int:整数类型

string:字符串类型

布尔: true false

浮点:1.2 3.4 5.6 7.8

变量的命令规范(自定义变量)

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

2.不要使用中文

3.不要使用特殊符号作为变量名称的开头,可以使用——作为变量开头 。

4.默认规则:学生 student(stu)

5.默认加上注释的,变量名的引用保持前后一致。

自定义变量:

在自定义变量当中:"" '' ``

整数类型可以不加引号,赋值为字符串类型,最好加上引号,以避免歧义。

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

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

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

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

echo "$a" 弱引用,原变量值不变

echo '$a' 强引用,变量值不再引用,就是$a这个字符

echo "${a}"

${a}:保证一定能够正确识别变量值。

变量赋值:

  1. a=1 b=1

2.read命令

read -p "" -a 回车

输入数字

变量的作用范围:

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

全局变量:

export 变量名=变量值

需要再一整套环境当中引用唯一且不需要变化的变量时,才会声明全局变量。

环境变量:

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

用户级环境变量:env

echo $PATH查看用户的环境变量

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

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

$USER 显示用户名称

$HOME 用户家目录

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

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

位置变量

命令行参数

在脚本或程序运行时,传递给他们的值,而且未知变量是在脚本外部传递变量值。

$n 1-9

$1 $2 $3 $4

10以上的话则

${10} ${11}

预定义变量

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

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

$*和$@ ,不加引号时结果一致,都会分行处理

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

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

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

shell整数的运输方式


[root@localhost opt]#expr 1 +  1
2
[root@localhost opt]#expr 5 - 3
2
[root@localhost opt]#expr 3 \* 4
12
[root@localhost opt]#expr 18 /  3
6
[root@localhost opt]#expr  16 \* 3 -  22
26
[root@localhost opt]#expr  16 \* 3 -  22  + 15
41
[root@localhost opt]#expr  5 % 2
1

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

运算符号

+   加

-    减

*    乘

/    除

%:取余数

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

++i 先+1 再赋值

i--  先赋值,再自减

--i  先自减,再赋值

浮点数运算

bc科学计算工具的运用

Bash内置了对整数运算的支持,但是并不支持浮点运算,而 bc 计算器可以很方便的进行浮点运算。

  • 支持交互式和非交互式两种方式。
  • 使用scale=n可以指定精度,即小数点后的位数。要写在算术表达式之前。

[root@localhost opt]#echo "1.1+1.1"|bc
2.2
[root@localhost opt]#echo "13.1-5.6"|bc
7.5
[root@localhost opt]#echo "scale=5;13.1*5.6"|bc
73.36
[root@localhost opt]#echo "scale=5;13.14*5.64"|bc
74.1096

awk命令的计算运用

使用awk进行浮点数的运算,运算结果最多只保留到小数点的后五位。

式:awk "BEGIN{print 算术表达式}"


[root@localhost opt]#awk "BEGIN{print 1.62*3.2}"
5.184
[root@localhost opt]#awk "BEGIN{print 11.62/3.2}"
3.63125
[root@localhost opt]#awk "BEGIN{print 11.62+3.2}"
14.82

 let的运用 

格式:let 变量=<数值>运算符<数值> 

 运算符与echo $[ ]相同

除此之外:

与java,c语言等计算机语言的整数变量用法相似,有

let i++     let i--    let i+=2    let i*=2   等等


[root@localhost opt]#let i=5+8
[root@localhost opt]#echo $i
13
[root@localhost opt]#i=1
[root@localhost opt]#let i++
[root@localhost opt]#echo $i
2
[root@localhost opt]#let i*=5
[root@localhost opt]#echo $i
10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值