一、shell 脚本基础知识
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
1. 查看默认shell
方法一:查看系统变量:echo $SHELL
方法二:通过文本处理命令抓取shell 信息:grep root /etc/passwd
方法三:查看用户记录信息文件的第一行:cat /etc/passwd | head -1
2. shell 脚本的建立
shell 脚本文件最好以“.sh” 结尾
在文件中第一行要写:#!/bin/bash
若是,没有写在第一行,会被当作为注释
创建脚本文件:
编写脚本文件:
echo 为输出命令
3. 脚本执行方法
方法一:利用脚本命令执行:sh script.sh | bash scrip.sh
方法二:利用路径执行(此方法需要给脚本文件加执行权限):path/script.sh | ./script.sh
方法三:利用source 或 "." 执行脚本文件:source script.sh | . script.sh
这种方法会使用source 或 “.” 来读入指定shell 文件,并将变量或函数值返回至父shell
在shell 脚本文件中,定义变量
该变量值为一条命令,将命令结果作为值时需要用` 命令` 或 $(命令)
`whoami` 执行结果为当前用户名
用不同方法执行脚本
只有source 或 “.” 来执行时,才能将脚本中定义的变量返回并输出
4. 脚本开发规范
在文件开头要写如下信息:所用的shell,脚本编写的日期,作者,联系方式,此shell 的描述,以及版本号
同时,需要在编写时加入适当的注释,便于他人理解
二、脚本变量
1. 环境变量
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
查看系统环境变量的方法:用命令 printenv 查看
修改环境变量的方法:vim /etc/profile ,若想马上生效,需执行source /etc/profile
例如:显示当前shell ,显示当前家目录
2. 查看系统可以使用的shell
cat /etcshells
3. 定义普通变量
方法一:直接写变量值
方法二:在单引号中写变量的值,此时不会对单引号中的值做任何解析,将其完全当作一个字符串
方法三:在双引号中写变量的值,此时会对双引号中的值做解析
注:在一般情况下,字符串都加双引号,除非需要原样输出时,再加单引号
4. 特殊变量
$0:获取shell 脚本文件名,如果执行时包含路径,则输出脚本路径加文件名
在文件中编写输出$0:
执行脚本:
$n(n>0):获取脚本的第n 个参数
编写脚本,输出脚本获取的三个参数
执行脚本,在脚本后的字符串为输入的变量值
在脚本中批量编写多个变量,“\“ 为转义符
执行脚本,并赋值
其中$10 输出错误,是因为,将其看作$1和字符0 输出,因此$10 要作为变量时,需要表示为${10}
再次执行,发现正确输出
$#:获取shell 脚本参数的总个数
编写脚本,输出$#
执行脚本,并传入100个参数,发现输出100
$?:获取上一条命令执行状态的返回值,非0为失败
$$:获取当前shell 进程号
三、常用语句
1. 输入语句:read
read 读取输入的值,并将该值保存在变量中
read -p 和在屏幕中输出提示语句,并将输入保存在变量中
2. 将命令的结果赋值给变量
方法一:` 命令 `
方法二:$(命令)
练习一:将系统日志目录下的所有文件打包,并以log_日期 方式命名
编写脚本,其中$(date +%F) 为以年月日的方式显示日期,也可以用命令:date -I 按要求显示
执行结果
四、数值计算
1. expr 命令
其中,乘法运算 乘号需要转义
2. $[ ] 和 $( ( ) ) 表达式
3. let 命令
该命令可以用来计算单目运算
4. bc 命令
bc 用来计算浮点数
bc 命令直接使用时,可以作为计算器
也可用管道符连接echo 命令 进行计算
在计算乘除法时,可用“scale=” 来指定保留小数后几位
练习二:提示用户输入两个数,并将这两个数的加、减、乘、除、余、指数运算结果输出
若要显示小数点前面的数字: