初学Linux--shell
Shell
shell属弱类型编程语言。
强弱的区分:
强:变量在使用前,必须事先声明,甚至还需要初始
弱:变量使用时声明,甚至部区分类型
bash变量类型
环境变量
本地变量(局部变量)
位置变量
特殊变量
本地变量:
bash:
VATNAME=VALUE:作用域为整个bash进程
局部变量:
local varname=value;作用域为当前代码段
环境变量:作用域为当前shell进程及其子进程
export varname=value
name=value
export name
”导出“
位置变量:
$1,$2...
shift
如:
[root@localhost shell]# cat shift.sh
#!/bin/bash
echo $1
shift
echo $1
shift
echo $1
[root@localhost shell]#
[root@localhost shell]# ./shift.sh 1 2 3
1
2
3
[ root@localhost shell]#
特殊变量:
1. $?上一个命令的执行状态返回值
程序执行,可能有两类返回值
程序执行结果
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行 1,2,127系统预留
2. $# 参数的个数
3. $* 参数列表
4. $@ 参数列表
/dev/null 软设备 bit bucket数据黑洞
撤销变量
unset VARNAME
查看当前shell中变量
set
查看当前shell中的环境变量
set
env
export
脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序
shebang:魔数
#!/bin/bash
#开头为注释行,不执行
脚本在执行时会启动一个子shell进程
命令行中启动的脚本会继承当前shell环境变量
系统自动执行的脚步(非命令行启动)
引用变量:作用域为当前shell进程及其子进程
${varname}
name=pao;
echo “THe hello word ${name}”,
条件判断
如果用户不存在
添加用户,给密码并显示添加成功
否则
显示如果已经存在,没有添加
bash中如何实现条件判断?
条件厕所类型
整数测试
字符测试
文件测试
条件测试的表达式:
【 expression 】
【【expression】】
test expression
整数比较:
-eq:测试两个整数是否相等 如; $a -eq $b
-ne:测试两个整数是否相等,不等为真,,相等为假
-gt:测试一个数是否大于另一个数;大于为真,否则为假
-lt:测试一个数是否小与另一个数;小与为真,否则为假;
-ge:大于或等于
-le:小于或等于
文件测试
-e 文件 测试文件是否存在
-f 文件 测试文件是否为普通文件
-d 文件 测试知道路径是否为目录
-r 文件 测试当前用户对指定文件是否有读取权限
-w 文件 测试当前用户对指定文件是否有写权限
-x 文件 测试当前用户对指定文件是否有可执行权限
【 -e /etc/inittab 】
命令间的逻辑关系:
逻辑与:&&
第一个条件为假时,第二个条件不用在判断,最终结果已经有
第一个条件为真时,第二条件必须要判断
逻辑或:||
条件判断,控制结构
单分支if语句
if 判断条件;then
statement1
statement2
....
fi
双分支if语句
if 判断语句;then
statement1
statement2
....
else
statement3
statement4
......
fi
多分支if语句
if 判断条件;then
statement1
......
elif 判断条件2;then
statement2
......
else
......
fi
测试脚本是否有语法错误
bash -n 脚本文件
脚本单步执行
bash -x 脚本文件
定义脚本退出状态码
exit:退出脚本
exit #
如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本的退出码
shell中如何进行算术运算
a=3
b=6
1. let 算术运算表达式 算术运算命令
let =c=$a+$b
2. $(算术运算表达式)
d=$[$a+$b]
3. $((算术运算表达式))
d=$(($a+$b))
4. expr命令 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
c= `expr $a + $b` 注:‘ ’ 为反单引号``
本文出自 “Linux运维技术交流” 博客,请务必保留此出处http://linuxzhang.blog.51cto.com/2580498/1657289
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。