Linux之shell脚本学习(1)简介和变量
什么是shell,
Shell是操作系统的最外层,可以理解是命令的集合,shell可以合并编程语言以控制进程和文件,以及启动和控制其他文件
简单来说,shell就是一个用户跟操作系统之间交互的命令解释器
Shell,应用程序,内核的关系如下
应用程序——shell——内核
Shell的好处,批量的处理,自动化的完成维护,减轻管理员的负担,监控服务器可用性,备份等‘
查看shell #cat /etc/shell
其中,/bin/bash是大多数linux中默认的shell解释器,之后的所有脚本的编写都是bash脚本,在linux中,无扩展名,shell脚本需要有执行的权限
Shell脚本声明的格式
—创建一个shell脚本 #vim frist.sh
—编辑
#!/bin/bash 固定格式,声明用的是bash解释器,#!是Sharp-hang符,是一个起始符,用于指定解释器
#echo hello 声明作用/或声明文件名
#author 声明作者
echo “hello”
如何去执行一个脚本
1. 使用绝对路径执行
2. 使用相对路径执行 ./
3. 使用sh命令执行 语法 #sh 脚本吗
4. 使用.(空格)脚本名称的方式执行
5. 使用source脚本名称执行
Shell中的变量
变量的本质是存储数据的一个或多个计算机内存地址
Shell变量的分类:自定义变量,环境变量,位置变量,预定义变量
特点:
1. 声明变量不用声明类型
2. 可以存储不同类型内容
3. 使用要明确变量类型
4. 区分大小写
5. 左右两边不能有空格
A)自定义变量,由用户自定义变量
语法:#$变量名或${变量名}
Eg:#linux=7.2
#echo$linux
#echo${linux}
Read命令
作用,通过键盘输入来定义变量
Eg:#read –p “input”name
-p是为了提高可读性
B)系统变量,一般为大写
Eg:$HOME, $PWD, $SHELL, $USER
显示当前shell中所有的变量 #set
在shell中,单引号和双引号的区别:单引号会将所有的特殊字符脱意,双引号仅将空格脱意
Eg:#x=”hello xx”
#echo$x
Helloxx
#x=’hello $x’
#echo $x
Hello $x
声明静态的变量 #readonly B=A ——不能unset
声明全局环境变量#export A=B
将命令的返回值赋给变量
语法: #A=”ls”或者A=$(ls)
C)特殊变量
$?表示上个命令退出的状态,0为执行成功,非0则执行失败
$$表示当前进程编号PID
$0表示当前脚本名称
$#表示参数变量的个数,常用于循环
$N表示位置变量,n代表数字,1到9
$*和$@都表示参数列表,不被引号“”包含时,都已$1.$2….$n的形式输出,当他们被双引号“”包含时,$*会将所有的参数作为一个整体,以” $1.$2….$n”的形式输出所有参数,$@会将各个参数分开,以”$1”.”$2”….”$n”的形式输出所有参数