脚本相信大家都不陌生,平时玩游戏遇到的各种辅助软件;你可能要敲上一会的命令,大佬发给你一个文本,运行一下一秒解决。脚本确实帮助了我们很多,今天就来简单的了解一下在Linux中的一个shell脚本。
什么是shell脚本?作用,或者是好处
shell脚本简单来说就是将平时使用的指令按照顺序罗列到文本文件中,在添加一个执行权,放到一个系统能找到的位置,这就是脚本。
作用:
有了它你可以批量处理很多种重复性的操作,避免了人力失误,效率不高的问题。还有能实现免交互的运行,对于实现自动化是有帮助的。
shell脚本编写的规则与执行
-
编写规范:一个好的脚本一定有是有辅助语句,和良好的阅读性。因为你的脚本要想让别人使用,哪些卡顿的地方要注意提前标识,以免被当作死机处理
-
使用有意义的变量名和函数名。
-
缩进以增加代码可读性,通常使用4个空格。
-
每条命令后加分号,或使用换行。
-
注释要清晰明了,使用#开头。
-
避免使用硬编码的值,使用变量或函数代替。
-
脚本开头指定解释器,如#!/bin/bash。不同的系统有不同的解释器,解释器本质上也是软件,下载之后就能运行对应的脚本,提高了移植性。
-
执行的方式:
-
执行脚本的方式
-
调用解释器
-
bash 脚本;dash 脚本;csh 脚本
-
-
路径执行
-
./脚本——绝对路径相对路径都行
-
前提需要赋予执行权,否则无法执行
-
-
-
. 或source
-
source 脚本
-
直接在当前shell进行
-
-
-
前两种执行方式会开启一个子shell环境,会消耗一部分资源。如果开的很多,系统资源可能被耗尽,需要根据情况来决定使用哪种方式执行脚本。
还有一个经常用的重定向与管道
-
重定向与管道
-
重定向:
-
- 标准输入,默认设备键盘,文件编号为0 --stdin(标准输入)
-
- 标准输出,默认设备是显示器,编号为1,
-
- 标准错误。默认设备是显示器,编号为2,
-
改变默认输出输入的方向称为重定向
-
重定向输出:是将命令的标准输出到指定文件中,而不是显示器上,重定向输出使用”>“”>>“分别是覆盖文件和追加文件。
-
重定向输入:是将命令接收输入的途径改为指定的文件,用”<“操作符。用该操作可避免出现交互式的使用。
-
例:给定用户密码的免交互
-
vi pass.txt
-
123456
-
useradd zhangsan
-
passwd --stdin zhangsan < pass.txt
-
-
错误重定向:通常使用”2>”来收集错误信息。
-
-
管道: 左侧为命令输出结果“|”右侧则将左侧的输出结果执行下一个命令。
-
例cd / | ls 就是先cd到根目录在执行ls命令
-
变量——脚本离不开的东西
-
变量
-
计算机变量的自定义:调用储存的内存——绕口,但理解后就会觉得很形象。
-
定义变量的基本格式:
-
“变量名=变量值”等号两边没有空格,且尽量避免使用特殊字符。
-
声明变量:用$符 如果变量名称与紧跟的字符容易混淆时需要用${}将变量圈起起到区分边界的作用。
-
${}用于引起变量
-
$()用于引起命令能进行嵌套例:$(cd /etc) $(ls -l)
-
``也用于引起命令与$()相同但反引号容易混淆且不能嵌套例:`cd /etc ` ls -l`
-
不能使用特殊字符
-
-
变量的命名规则
-
变量名只能包含字母、数字和下划线
-
变量名必须以字母或下划线开头
-
变量名是区分大小写的
-
变量名不能使用Shell的保留关键字
-
保留关键字:类似于ls,cd,pwd,不能用这种方式命名变量名
-
-
变量名应尽可能具有描述性
-
避免使用空格或特殊字符
-
-
定义变量的方法:
-
用“=”号连接变量名与变量
-
read
-
交互式的方式定义变量
-
-p 加入提示消息提醒用户操作
-
-
-
-
引用变量的方法
-
“变量”
-
双引号引起变量
-
该方式可以调用字符串中带$的字符
-
例:name=www echo $name www echo “my$name” mywww
-
-
-
'变量'
-
单引号引起变量
-
用该方式会将字符串中的$做原样输出
-
-
${变量}
-
方便清晰
-
-
$()
-
只能调用命令
-
且能嵌套
-
-
-
··
-
只能调用命令
-
不能嵌套
-
-
-
-
变量的作用范围
-
全局变量
-
文件/etc/profile
-
在任意子shell中都生效
-
set查看
-
修改立即生效,可执行该脚本
-
-
-
-
全局变量尽量使用大写
-
-
局部变量
-
例:用户下的.bash_profile
-
只在当前shell生效
-
-
局部变量尽量使用小写
-
用export可将局部变量导出为全局变量
-
若在脚本中不想将变量设置为全局变量可添加local
-
-
-
数值变量的运算
-
数值与运算符之间必须有空格
-
expr
-
整数运算器
-
- + 加法运算
-
- -减法运算
-
- \*乘法运算 前面要加转义符
-
- /除法运算
-
- %求模运算·(取余运算)
-
-
-
-
特殊的shell变量
-
环境变量
-
/etc/profile
-
-
只读变量
-
readonly $变量
-
不允许被重新赋值
-
-
-
位置变量
-
$1 $2 $3 ....
-
-
预定义变量
-
由bash预先定义好的变量
-
如$PASH $HOME
-
-
-
以下是常用的特殊变量,
-
$# 传送给命令Shell的参数个数
-
$- 在Shell启动或使用set命令时提供选项
-
$? 上一条命令执行后返回的值
-
$$ 当前shell的进程号
-
$! 上一个子进程的进程号
-
$@ 所有的参数,每个都用双括号括起 以遍历的形式,(遍历,扫描到一个数据,显示一次,在扫描在显示。
-
$* 所有参数,用双括号括起
-
$n 位置参数值,n表示位置
-
$0 当前shell名 路径
-
-
到此为止呢,对于脚本,对于变量会有浅显的认识,可以尝试自己编写安装源码包的脚本,来实践 ,如果有疑问欢迎留言,看到会解答。
标签:脚本,shell,变量,命令,初识,使用,变量名 From: https://blog.csdn.net/Q7758521adc/article/details/139198245