目录
Shell脚本概述
什么是Shell?
Shell脚本的概念
Shell脚本应用场景
Shell的作用
编写脚本代码
创建shell程序步骤
执行脚本文件
重定向与管道 *** 作
交互式硬件设备
重定向 *** 作
管道 *** 作符号“|”
Shell变量的作用、类型
变量的作用
变量的类型
赋值时使用引号
交互式定义变量
交互式定义变量(read)
设置变量的作用范围(export)
整数变量的运算(expr)
let命令
bc命令(相当于计算器)
精确到小数点后几位:scale
特殊的Shell变量
环境变量
只读变量
位置变量
预定义变量
本章总结
Shell脚本概述 什么是Shell?
Shell是一个命令解释器,它在 *** 作系统的最外层,负责直接与用户进行对话,把用户的输入解释给 *** 作系统,并处理各种各样的 *** 作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的,我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。
Shell脚本的概念- 将要执行的命令按顺序保存到一个文本文件
- 给该命令可执行权限
- 可结合各种Shell控制语句以wan'c
- 重复性 *** 作
- 交互性任务
- 批量事务处理
- 服务运行状态监控
- 定时任务执行
- ……
Linux系统中的Shell是一个特殊的应用程序,它介于 *** 作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的 *** 作指令(命令)并进行解释,将需要执行的 *** 作传递给内核执行,并输出执行结果。
常见的 Shell 解释器程序有很多种,使用不同的 Shell 时,其内部指令、命令行提示符等方面会存在一些区别。通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类。
[root@DL ~]# cat /etc/shells
/bin/sh #是bash命令的软链接 (已经被/bin/bash所替换)
/bin/bash #基准于GNU的框架下发展出的Shell。
/usr/bin/sh #已经被bash所替换。
/usr/bin/bash #centos和redhat系统默认使用bash shell
/bin/tcsh #csh的增强版,与csh完全兼容 整合了csh,提供更多的功能。
/bin/csh #已经被/bin/bash 所替换 (整合C shell,提供更多的功能)
编写脚本代码
- 使用vim文本编辑器
- 每行一条Linux命令,按执行顺序依次编写
赋予可执行权限
使脚本具有可执行属性
创建shell程序步骤
- 创建一个包含命令和控制结构的文件
- 编辑完之后修改这个文件的权限使他可以执行
- 检测语法错误(命令集合是否正确)
- 执行我们的脚本 ./dome.sh
方法一:脚本文件路径(绝对路劲与相对路径)(必须有执行的权限)
方法二:sh脚本文件路径
方法三:source脚本文件路径
方法三也可以用“.”执行
方法四:sh < 脚本文件路径
方法五:cat 脚本文件路径 | sh
方法六:bash 脚本文件路径
重定向与管道 *** 作 交互式硬件设备- 标准输入:从该设备接收用户输入的数据
- 标准输出:通过该设备向用户输出数据
- 标准错误:通过该设备报告执行出错的信息
定向输入
定向输出
/dev/null:把它看作"黑洞",所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然 而 /dev/null 对命令行和脚本都非常的有用
echo kgc > /dev/null
cat /dev/null #什么信息也看不到
标准错误输出
管道 *** 作符号“|”
管道(pipe) *** 作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。
在 Shell 脚本应用中,管道 *** 作通常用来过滤所需要的关键信息。
$bash $表示系统提示符,$ 表示此用户为普通用户,超级用户的提示符是#,bash是shell的一种,是linux下最常用的一种shell,$bash的意思是执行一个子shell,此子shell为bash。
Shell变量的作用、类型 变量的作用
用来存放系统和用户需要使用的特定参数(值)
- 变量名:使用固定的名称,由系统预设或用户定义
- 变量值:能够根据用户设置、系统环境的变化而变化
- 自定义变量:由用户自己定义、修改和使用
- 特殊变量:环境变量,只读变量,位置变量,预定义变量
定义一个新变量
变量名以字母或下划线开头,区分大小写,建议全大写
变量名=变量值
查看变量的值
echo $变量名
echo选项
echo -n 表示不换行输出
使用echo -e输出转义字符,将转义后的内容输出到屏幕上
常用的转义字符如下:
- \c 不换行输出,在”\c”后面不存在字符的情况下,作用相当于echo -n
- \n 换行
- \t 转义后表示插入tab,即制表符
注:\转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用
取消变量名:unset
赋值时使用引号-
双引号:允许通过$符号引用其他变量值
-
单引号:禁止引用其他变量值,$视为普通字符
-
反撇号(`):命令替换,提取命令执行后的输出结果
先通过 which useradd 命令查找出 useradd 命令的程序位置,然后根据查找结果列出文件属性
使用反撇号难以在一行命令中实现嵌套命令替换 *** 作,这时可以改用 “$()”来代替反撇号 *** 作,以解决嵌套的问题
交互式定义变量read 命令
使用 Bash 的内置命令 read 来给变量赋值。
用来提示用户输入信息,从而实现简单的交互过程。执行时将从标准输入设备(键盘)读入 一行内容,并以空格为分隔符,将读入的各字段依次赋值给指定的变量(多余的内容赋值给 最后一个变量)。若指定的变量只有一个,则将整行内容赋值给此变量。
- -p 提示用户的信息
- -n 定义字符数
- -s 不显示用户输入的内容,常用于输入密码 read -s -p "input your password:" pass
- -t 定义超时时间,超过多长时间没输自动退出
常用运算符
- 加法运算:+
- 减法运算:-
- 乘法运算:\*
- 除法运算:/
- 求模(取余)运算:%
用shell脚本打印九九乘法表
let命令 bc命令(相当于计算器)精确到小数点后几位:scale 特殊的Shell变量 环境变量
- 由系统提前创建,用来设置用户的工作环境
- 配置文件:/etc/profile、~/.bash_profile
常见的环境变量
- PWD、PATH
- USER、SHELL、HOME
设置在root下能 *** 作所有命令
只读变量用于变量值不允许被修改的情况
位置变量表示为$n,n为1~9之间的数字
预定义变量
- $#:命令行中位置变量的个数
- $*:所有位置变量的内容
- $?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0时表示执行异常或出错
- $@:列出所有位置参数,但是是以单个的形式列出 :当前执行的进程/进程名
- $$:返回当前进程的进程号
- $!:返回最后一个后台进程的进程号
- Shell的作用与应用场景
本章总结
- Shell脚本的编写规范与执行方法
- 重定向与管道的作用及其使用方法
- 自定义变量赋值时单引号、双引号、反撇号的使用方法
- 数值变量的常用运算符:+、-、\*、/、%
- 环境变量、只读变量、位置变量、预定义变量的用途
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)