shell脚本基础(一)
什么是shell?shell与bash之间的关系?
shell是你(用户)和linux(内核)之前的接口程序,你在提示符下输入的每个命令都由shell先解释然后传给linux内核。
shell其实就是一个命令解释器,拥有自己内建的shell命令集,此外也能被系统中其他有效的的linux实用程序和应用程序所调用。
我们通常键入一个命令,shell 首先会检查是否内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是linux本身的实用程序,也可以是商用程序。如果你键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息,而如果被成功找到,shell内部或应用程序被 分解为系统调用并传给linux内核.
Bourne Again shell (bash), 正如它的名字所暗示的,是 Bourne shell 的扩展.其只是shell解释器中的一种。
bash特征之hash:
hash:命令缓存hash,用来存储之前执行的命令;
hash -d name 删除缓存中单条命令;
hash -r 清空缓存列表;
bash变量:
本地变量:只对当前shell过程生效,对子shell子进程无效;
变量赋值:name=vlaue
变量引用:${var_name}/$var_name
查看变量:set
清除变量: unset +var_name
环境变量:对当前shell进程及其子进程都有效;
变量赋值:1.export name=vlaue
2.declare -x name=vlaue
查看变量:export/declare -x/printenv/env
设置只读变量:将变量设置为只读状态后,变量将不可修改和删除,该操作只对当前shell生命周期生效。(readonly+var_name/declare -r var_name)
bash特征之多命令执行
#COMMAND1;COMMAND2;COMMAND3;... 为一般多命令执行方法
采用逻辑运算方法执行多命令
逻辑运算:真(true,yes,on,1),假(false,no,off,0)
1.与运算&&(视之乘法运算)
1 && 1 =1
1 && 0 =0
0 && 1 =1
0 && 0 =0
只有当两个命令执行结果都为真时,结果才为真
当COMMADN1为真,COMMAND2必须执行;而当COMMAND1为假时,COMMAND2无需执行,根据与运算法则可以提前判断结果为假。
通常用假设语句表示为:如果前一条命令执行成功时,将执行下一条命令,反之将终止执行;
例如:# useradd wei && echo '123456' |passwd wei --stdin 如果新建帐号wei成功,将附加密码
2.或运算(视之加法运算)
1 || 1 =1
1 || 0 =1
0 || 1 =1
0 || 0 =0
只有当两个命令执行结果都为假时,结果才为假
当COMMAND1为假时,COMMAND2必须执行,反之当COMMADN1为真是,COMMAND2无需执行,根据或运算法则可以提前判断结果为真
通常用假设语句表示为:如果前一条执行不成功时,将执行下一条命,反之终止执行;
例如:# id wei || useradd wei 当帐号wei不存在的时候,将新建帐号,反之终止;
浙公网安备 33010602011771号