shell是包在Linux内核的外面,为用户和内核之间的交换提供一个接口。
用户输入的命令会通过shell处理,shell将处理后的信息传到内核或程序执行工作。系统的响应也是循着相反的方向由shell传到屏幕上给用户看。
(一)shell中通配符:
(1)*通配符:代表从它位置开始的任何字符串,如f*匹配以f打头的任意字符串。文件名前的原点“.”和路径名中的“/”必须显示匹配,如“*”不能匹配.file,而“.*”可以匹配.file;
(2)?通配符:代表它位置上的任何单个字符 ;
(3)[]:代表一个指定范围的字符 ,[]中的第一个字符若是“^”和“!”,则为非运算。
(二)shell脚本的运行过程:
shell脚本第一行会放置一行特殊的字符串,目的是告诉操作系统使用哪个shell来执行这个文件
如果脚本前两个字符是“#!”,那么系统会将这两个字符后面的字符串作为执行该文件的绝对路径名。
如下面一个shell脚本程序:
#!/bin/bash
#filename:ba
echo "这是一个shell脚本程序"
执行这个shell脚本程序有三种方法:
(1)通过chmod将文件的权设置为可读可执行,然后执行该文件:
#chmod u+x ba
#./ba
这是一个shell脚本程序
(2)直接使用shell 启动的方式来执行脚本:
#bash 脚本文件名以及其参数
#tcsh ba
这是一个shell脚本程序
(3)使用bash内部命令“source”或“.”运行shell脚本:
#source 脚本文件以及其参数
#. 脚本文件名以及其参数
(推荐第一种方法执行脚本程序)
(三)shell变量类型
shell中的变量类型分为环境变量,位置变量,预定义的特殊变量以及用户自定义变量
1.环境变量:是一类shell预定义变量,用于设置系统运行环境的变量。
#echo $PWD
/root
获取PWD的当前路径
(注意:如果要是用环境变量或其他shell变量的值,必须在变量名前加一个“$”符号)
2.位置变量:是一句出现在命令上的参数的位置来确定的变量
#命令 参数1 参数2 参数3 ……
位置变量对应命令行上的各项位置参数,命令名对应$0 ,命令的第一参数对应$1,以此类推。
例,有shell脚本如下:
#filename:locat
echo $0 $1 $2
shirf
执行locat程序:
#chmod u+x locat
#./locat 1 2
3.预定义的特殊变量:与环境变量类似,由shell根据实际情况设置,所有的预定义特殊变量都是由"$"和另一个符号组成
$#:实际位置参数的个数
$*:命令行中的所有位置参数组成的字符串
$!:上一个后台命令对应的进程号
$$:当前进程号PID
4.用户自定义变量:变量名称有字母或下划线开头,后面是任意的字母,是数字,下划线
(四)shell变量的赋值
1.使用read命令赋值
例如:
#!/bin/bash
#filename:readtest
echo "请输入名字"
read name
echo "你输入的名字是:$name"
2.直接给变量赋值
#!/bin/bash
#filename:resume
name=su
gender=male
echo "name:$name"
echo "gender:$gender"
3.使用命令行参数赋值:
#!/bin/bash
#filename:cmdarg
echo "program name:$0"
echo "first:$1"
echo "second:$2"
运行:
#chmod u+x cmdarg
#./cmdarg 555 666
程序结果是:
program name:./cmdarg
first:555
second:666
(五)shell变量的输出
echo $name1