网站使用引导,阿克苏网站建设一条龙服务,wordpress 苗木 主题,网站建设所需技术shell的基本概述和规范
shell面向的对象
面向过程语言
#xff08;开发的时候#xff0c;需要一步一步的执行#xff09; 做一件事情#xff0c;排出个步骤#xff0c;第一步干什么#xff0c;第二步干什么#xff0c;如果出现情况A#xff0c;做什么处理#xff0…shell的基本概述和规范
shell面向的对象
面向过程语言
开发的时候需要一步一步的执行 做一件事情排出个步骤第一步干什么第二步干什么如果出现情况A做什么处理如果出现了情况B做什么处理 问题规模小可以步骤化按部就班处理 以指令为中心数据服务于指令 cshell
面向对象语言开发的时候将任务当作一个整体 将编程看成是一个事物对外界来说事物是直接使用的,不用关心事物内部的情况。而编程就是设置事物能够完成功能. 一种认识世界、分析世界的方法论。将万事万物抽象为各种对象 类是抽象的概念是万事万物的抽象是一类事物的共同特征的集合 对象是类的具象是一个实体 问题规模大复杂系统 以数据为中心指令服务于数据 javapythongolang等 云 go k8个字母s 平台
shell的概述
是将人类使用的高级语言转换成二进制也可以将二进制翻译成高级语言。
人类写了个命令集合用bashshell去翻译给硬件执行。
shell脚本的概念 将要执行的命令按顺序保存到一个文本文件 给该文件可执行权限 可结合各种shell控制语句以完成更复杂的操作
shell脚本应用场景 重复性操作 交互性任务 批量事务处理 服务运行状态监控 定时任务执行
shell编程规范
编写脚本代码 使用vim文本编辑器 每行一条linux命令按执行顺序一次编写
shell脚本的组成脚本名最好以.sh结尾shell语法会高亮
1.脚本申明解释器第一行开头“# /bin/bash”。表示此行以下的代码语句是由shell语言编写
2.注释信息以#开头的语句表示为注释信息。
3.可执行语句比如echo命令用于输出“ ”之间的字符串。
shell执行脚本
1.直接调用shell解释器加上脚本的名字bash 脚本名 。不需要加权限
2.路径/脚本 路径绝对路径或相对路径而且需要x权限加上执行权限chmod x 文件名
3.source.) 加脚本名字不建议使用会修改当前bash环境 如果你想让脚本全局运行或者可以补全要将脚本放入$PATH路径下 使用1和2执行脚本是会新开一个bash环境去执行不影响当前bash环境而如果使用3去执行脚本会直接在当前环境执行。 脚本执行逻辑和执行方式
脚本执行逻辑
1.顺序执行程序按从上到下顺序执行
2.选择执行程序执行过程中根据条件的不同进行选择不同分支继续执行。
3.循环执行程序执行过程中需要重复执行多次某段语句。
脚本错误及调试
1.命令错误不会影响接下来的命令执行但是本条错误的命令不执行。
bash -x 脚本模拟执行后发现错误
2.语法错误直接导致脚本无法运行。
bash -n 脚本检查语法错误在哪一行错了出错的行数不一定是正确的上下左右
3.逻辑错误只能自己去筛查 shell脚本(安全选项)
set -e在脚本里加一旦出错立即停止
set -u变量不存在不让执行
变量如dir /opt
重定向与管道操作
--stdin管道操作
将管道符号“ | ”左侧的命令输出的结果作为右侧命令的输入处理对象同一行命令中可以使用多个管道
管道符“|”
将第一个命令的结果当作后一个命令的处理对象。 pa aux |wc -l
echo abc123 |passwd --stdin zhangsan 重定向标准输出、错误输出、标准输入
默认电脑数据的输出方向是屏幕
1.标准输出:
你发了一条指令给电脑操作 电脑会回复结果给你结果是一定显示在屏幕上称为标准输出
2.错误输出:
如果电脑没有正确回复,称为错误输出
3.标准输入:
我们通过 键盘 标 扫描仪 话简 等设备输入给电脑的指令
交互式硬件设备
类型设备文件文件描述编号默认设备标准输入/dev/stdin0键盘标准输出/dev/stdout1显示器标准错误输出/dev/stderr2显示器
重新定向操作改变输出方向
1.输出到别的终端设备tty查看本机名
2.输入到文件中
“ 覆盖”
“ 添加”
类型操作符用途重新定向输入从指定文件读取数据重新定向输出将标准输出结果保存到指定的文件并且覆盖原有文件将标准输出结果添加到指定文件的末尾不覆盖原有内容标准错误输出2将错误信息保存到指定文件并且覆盖原有的文件2将错误信息追加到指定文件尾部不覆盖原有内容混合输出将标准输出标准错误保存到同一文件中21将标准错误输出重新定向到标准输出 useradd zhangsan #创建一个用户
echo123456 zhangsan.txt #把密码输出到文件
passwd --stdin zhangsan zhangsan.txt #从文件里读取密码
命令输错了会报错当不想看到报错时可以把它藏到文件里显示
如li 2 aaa.txtcat查看就可以查看到报错了li 2 aaa.txt #同上性质只是会添加不会覆盖la aaa.txt #同样只会添加不会覆盖ll aaa.txtll aaa.txt 21 #21效果和一样
shell脚本变量
变量的作用用来存放系统和用户需要使用的特定参数
变量值可以变化的
常量值不可以变化
变量名使用固定的名称由系统预设或用户定义
变量值能够根据用户设置、系统环境的变化而变化
shell不分数据类型统一将所有的数据类型看作字符串
变量的类型
1.自定义的变量由用户自己定义、修改和使用
2.预定义变量 bash中内置的一类变量
3.环境变量 由系统维护用于设置工作环境
env可以看到所有环境的变量
4.只读变量常量
只可以读不可以改
5.位置变量通过命令行给脚本程序传递参数
自定义变量
要求方式设置变量变量名变量值 两边没有空格调用变量echo $变量名删除变量unset 变量名重新定义变量变量名变量值追加变量值变量名变量值
命名要求 区分大小写 不能使程序中的保留字和内置变量: 如: if,forhostname 命令 a 只能使用数字、字母及下划线且不能以数字开头注意:不支持短横线“ - ”和主机名相反 不要使用内置的变量使用英文尽量使用词义通俗易懂PATH 大驼峰StudentFirstName 小峰studentFirstName 下划线 student_name
变量的特殊符号
${}定义了变量名的范围
“ ” 变量在双引号里可以识别弱引用
‘ ’ 变量在单引号里不被识别强引用
反撇号代表调用命令执行的结果同理别名。将一串命令重新定义效果等于$( ) namehyh #变量名变量值
age233 #变量名变量值
echo $name $age
hyh 233
echo $name $age #单引号内$视为普通字符
$name $age
echo $(ls /opt)
123 rh#反撇号和括号使用结果都一样提取命令执行后的结果
echo ls /opt
123 rh
变量追加值
格式titlecto
titleylc #变量名追加值 [rootlocalhost opt]# hyh原神
[rootlocalhost opt]# hyh启动
[rootlocalhost opt]# echo $hyh
原神启动
修改环境变量
PATH/data
vim /etc/profile
PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data 查看变量的值
echo $变量名 namehyh #变量名变量值
age233 #变量名变量值
echo $name$age
hyh233#输出多个变量的值加空格和不加空格的区别
echo $name $age
hyh 233
#如果变量名后跟了别的字符传记得把变量名加上大括号区别开
如
echo ${name}$age
hyh233
echo ${name} $age
hyh 233
echo ${name}lisi
hyhlisi
echo ${name} lisi
hyh lisi 变量作用范围 默认情况下新定义的变量只在当前的Shell环境中有效因此称为局部变量。当进入子程序或新的子Shell环境时局部变量将无法再使用 可以通过内部命令export将指定的变量导出为全局变量使用户定义的变量在所有的子Shell环境中能够继续使用
设置变量的作用范围临时的
格式1export 变量名
格式2export 变量名变量值 指定该变量在任何环境下都能使用 可以使用pstree 查看shell的环境 输入bash进入子shell环境 ctrlD组合键或者输入exit 命令退出子shell环境 整数的运算
expr只能进行整数的运算 格式:expr 变量1 运算符 变量2[运算符 变量3] 运算符 : 加法 减法 - 乘法 \ * 除法 / 取余 % let sum12
echo $sum
3 let var算术表达式
let sum12
sum12$((var算术表达式))和上面等价
((sum12))
echo $sumvar S[算术表达式]
var$(expr argl arg2 arg3 ...)
var expr argl arg2 arg3...
echo算术表达式’ |bc
sum$[ ] 计算 [roottest1 ~]# vim ji.sh
#!/bin/bash
read -p 请输入第一个整数 num1
read -p 请输入第二个整数 num2
#执行加法运算
sumexpr $num1 $num2
echo 运算结果为$sum
[roottest1 ~]# chmod x ji.sh
[roottest1 ~]# ./ji.sh
请输入第一个整数6
请输入第二个整数9
运算结果为15
环境变量 环境变量由系统提前创建用来设置用户的工作环境 使用env命令可以查看到当前工作环境下的环境变量 变量USER表示用户名称HOME表示用户的宿主目录LANG表示语言和字符集PWD表示当前所在的工作目录 变量PATH表示可执行程序的默认搜索路径
/etc/profile
#只要开机或者用户登录就下载里面的配置文件
/etc/bashrc
#每次用户登录的时候也会加载里面的配置主要是加载功能和别名用的
~/.bashrc
#当前用户每切换一次shell环境都会自动执行会加载/etc/bashrc
~/bash_profile
#每次用户登录的时候也会加载里面的配置主要是加载功能和别名用。 修改环境变量 PATH/data #将/data目录添加到搜索路径
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data
export PATH:/data #输出全局变量 环境变量的全局配置文件为/etc/profile在此文件中定义的变量作用于所有用户在每次电脑开机时都会加载这个文件。每个用户还有自己的独立配置文(~/.bash_profile)。可以用来长期变更或设置某个环境变量 预定义变量(前面加echo显示)
bash 帮你定义好了 拿来用就可以了
$?表示上一条命令执行后的返回状态返回值0表示执行正确非0值则表示出现异常。
$#表示命令行中位置参数的个数
$0:表示当前执行的脚本或程序的名称
$$:表示当前bash的pid
$!:后台任务最后一个id
$*:代表返回所有参数所有参数当成一个整体返回
$:代表返回所有参数每个参数是独立的个体
位置变量
位置变量也称为位置参数使用$1、$2、$3、…、$9 表示 #!/bin/bash
echo $1 位置1
echo $2 位置2
echo ${10} 位置10
echo $10 位置1和0
echo $* 将所有项当成一个值
echo $ 所有项
echo $0 脚本自身
echo $# 后面参数的个数
[roottest1 ~]# ./1.sh {1..10}
1
2
10
10
1 2 3 4 5 6 7 8 9 10 变量的命令
bash
相当于一个多开的桌面
显示当前bash的pid号echo $$
readonly
命令设置只读变量无法修改无法删除 productbenet
readonly product #设置为只读变量
echo $product
productaccp #只读变量不可以被重新赋值
unset product #只读变量不可以被删除unset命令用于删除变量
read命令获取输入内容
方法一: read -p 提示信息 变量名 echo $变量名
方法二: echo -n “提示信息” read变量名 echo $变量名 read -p 你在干什么 you #定义you这个变量名的变量值提示信息 变量名
你在干什么 玩原神
echo $ you
玩原神 #变量值 脚本示例
脚本搭建yum仓库 #!/bin/bash
mount /dev/sr0 /mnt
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
echo
[hyh]
namehyh
baseurlfile:///mnt
gpgcheck0hyh.repo
yum clean all /dev/null #显示的内容放入垃圾箱
yum makecache /dev/null #显示的内容放入垃圾箱 建立一个简单的计算器脚本 注意一定要用英文符号 建立一个显示本机配置属性脚本 建立自动分区的脚本