shell是操作系统与用户进行交互操作的界面,shell与内核交互的方式:1.直接从键盘输入命令,2.通过shell脚本方式执行。
/etc/shells文件中包含了所有linux系统可以使用的shell。
在某个shell程序中可以通过执行其他shell来改变用户当前所使用的shell。
用户登录时默认使用的shell保存在/etc/passwd文件中。
shell变量:shell变量名可以包含数字、字母、下划线,变量名的开头必须是字母或者下划线。shell变量时对大小写敏感的,一般建议用大写字母来表示shell变量。
shell变量的取值:“shell变量名=值”,等号两边不能有空格。
shell变量的引用:“$变量名”。
shell变量的分类:用户自定义变量(本地变量)、环境变量、位置参数变量、预定义变量。
用户自定义变量:本地变量是由用户自定义的变量,只作用于当前shell,对于在这个shell环境下的子shell程序,他将不能够有效的访问。
自定义变量
自定义变量的设置:$DAY=sunday $DAY="today is sunday" 若变量本身含有空格则必须用双引号括起来。
自定义变量的查看和引用:echo $DAY echo "$DAY" $DAY
自定义的清除:unset DAY
显示所有本地定义的shell变量:set
环境变量
环境变量定义用户工作的环境,用户可以再当前shell和任意子shell中获取它们设置的信息。
环境变量必须用export命令导出来,是其能够作用于所有的shell环境。 export DAY
使用env命令查看所有环境变量。 env
环境变量配置文件:/etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc ~代表用户主目录
位置变量
shell通过位置参数变量来获得用户在命令行上附加的参数。位置参数变量共有10个:$0-$9,他们分别标识了用户在整个命令行中以空格分隔开的字符串。
预定义变量
$#:传递到脚本的参数的数量。
$*:以一个单字符串显示传递到脚本的所有的参数的内容。
$?:表示命令执行后返回的状态,用于检查上一个命令执行的是否正确。在linux中返回0表示正确执行,返回任意非表示执行错误。
$$:表示当前进程的进程号。
$!:表示后台运行的最后一个进程号。
$0:表示当前执行的进程名。
重定向
<: 标准输入重定向 wc < /etc/passwd
>:标准输出重定向 ls /etc/system > file
>>:将标准输出重定向追加到 ls /etc/passwd >> file
2>:错误输出重定向
2>>: 错误输出重定向追加到
&>:将标准输出和标准错误输出重定向
管道 |
ps | grep bash
shell脚本
shell脚本程序是shell脚本语句的集合,用于实现特定的功能,类似于windows下的.bat批处理文件。
shell脚本程序保存在文本文件中,可以使用文本编辑工具进行阅读和编辑。
shell脚本程序是由shell环境解释执行的,不需要再执行前进行编译。
shell脚本程序在执行时,脚本文件需要可执行的属性。
使用文本编辑器vi建立shell脚本文件。
脚本文件中需要包含的内容:
1.脚本运行的环境设置,需要指明该shell脚本由哪个shell来解释。#!/bin/bash #!/bin/sh
2.注释行以#开始: #.........
3.脚本语句:shell命令和系统命令。
在编辑完shell脚本文件后需要对脚本文件的权限进行设置: chmod +x file
脚本程序的执行:
bash file.sh
. file.sh
chmod +x file.sh ./file.sh
条件测试
使用text:text 条件表达式
使用[]: [ 条件表达式 ] 条件表达式两边必须留一个空格。
流程控制
if then else语句:if语句测试语句,如果语句为真(0),则执行if后的then语句;否则执行if外语句。
if[ 条件表达式 ];then 指令
elif[ 条件表达式 ];then 指令
.
.
.
else 指令
fi
for循环:当变量可以在列表中取值时,执行下面的指令序列,循环替换变量中的值,直到列表中的值被替换完为止。
for 变量名 in 列表;do 指令序列
done
until循环:until在条件为假时,执行指令序列,循环直到条件为真时停止。
until 条件;do 指令序列
done
while循环:while 条件;do 指令序列
done
case语句:case 值 in
模式1) 指令序列1;;
模式2) 指令序列2;;
模式3) 指令序列3;;
esac
函数
函数名()
{
函数体
}
函数调用:函数调用之前先定义,脚本中没有函数声明;
函数导出:使用.运算符将建立的函数导入shell环境中。 $.file.sh
阅读(2326) | 评论(0) | 转发(1) |