Shell编程:
编程语言:机器语言、汇编语言、高级语言
高级语言:
静态语言:编译型语言
静态语言:编译型语言
强类型(变量)
变量:\\变量在使用前,必须事先声明,甚至还需要初始;。
事先转换成可以执行格式
C、C++、JAVA、C#
动态语言:解释型语言,on the fly
弱类型 \\边解释边执行。
变量:\\变量用时声明,甚至不区分类型。
PHP、SHELL、Python、Perl
变量:内存空间,命名
内存:编址的存储单元
变量类型:事先确定数据的存储格式和长度;
字符
数值
整型
浮点型
逻辑运算:
与:只要有一个为假,结果一定为为假
或:只要有一个为真,结果一定为真
我是分割线
行间距太大,请求调整
Shell
变量赋值:
'VAR_NAME=VALUE'
BASH变量类型:
环境变量
本地变量(局部变量)
位置变量
特殊变量
本地变量:
#VARNAME=VALUE':作用域整个bash进程;
局部变量:
# local VARNAME=VALUE:;'作用域为当前代码段
环境变量:
# export VARNAME=VALUE':作用域为当前shell进程及其子进程;
位置变量
$1,$2,…
. root/filetest3.sh /etc/passwd /tmp/testdir
$1=/etc/passwd $2=/tmp/testdir
特殊变量:
$?:上一个命令的执行状态返回值;
程序执行,可能有两类的返回值:
'1、程序执行结果'
'2、程序状态返回代码(0-255)'
0:正确执行
1-255:错误执行,1,2,127,系统预留
"导出"
$#:参数的个数
$*:参数列表
$@:参数列表
撤销变量:
# unset VARNAME'
查看shell中的变量
# set
查看当前shell中环境变量:
# printenv
# env
# export
》脚本在执行时会启动一个子sehll进程;
》命令行中启动的脚本会继承当前shell环境变量;
》系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;
练习:写一个脚本,完成一下任务
1、添加5各用户,user1,…,user5
2、每个用户的密码同名,而且要求添加密码完成以后不显示passwd命令的执行结果信息;
3、每个添加完成后,都要显示用户某某已经成功添加
练习:写一个脚本,完成一下任务
1、使用一个变量保存一个用户名;
2、删除此变量中的用户,且一并删除其家目录;
3、显示"用户删除完成"类信息
条件判断:
如果用户不存在
添加用户,给密码并显示添加成功;
否则
显示如果已经存在,没有添加;
bash中如何实现添加判断?
添加测试类型:
整数测试
'-eq:测试两个整数是否相等;比如 $A -eq $B
'-ne:测试两个整数是否相等;不等,为真;相等,为假
'-gt:测试一个整数是否大于另一个数;大于,为真;否则,为假
'-lt:测试一个整数是否大于另一个数;小于,为真;否则,为假
'-ge:大于或等于
'-le:小于或等于
# [ $EXPRESSION -eq 0 ] \\测试表达式的用法。
# [[ $EXPRESSION ]]
# test expression
字符测试
==:测试是否相等,相等为真,不等为假
!=:测试是否不等,不等为真,等为假
文件测试
-e FILE:测试文件是否存在
-f FILE:测试文件是否为普通文件
-d FILE:测试指定路径是否为目录
-r FILE:测试当前用户对制定文件是否有读取权限;
-w FILE:测试当前用户对制定文件是否有写权限;
-x FILE:测试当前用户对制定文件是否有执行权限;
/////////////////////////////////////////////////////////////////////////////////////////////////////
shell中如何进行运算:
A=3
B=6
1、let 算术运算表达式
# let C=$A+$B
# echo $C
2、$[算术运算表达式]
# C=$[$A+$B]
# echo $C
3、$((算术运算表达式))
echo $(($A+$B))
'单分支if语句
if 判断语句; then
语句;
语句;
fi
'双分支if语句
if 判断语句; then
语句
语句
else
语句
语句
fi
'多分支if语句
if 判断条件; then
statement1
…
elif 判断条件;then
statement2
…
elif 判断条件;then
statement3
…
else #前面所有的条件都不满足,才执行这个
statement4
…
fi
case语句
case VALUE in
1)
comd……
;;
2)
conmd…….
;;
…)
comd…….
;;
esac
/////////////////////////////////////////////////////////////////////////////////////////////////////
循环:进入条件,退出条件
for
for 变量 in 列表; do
循环体
done
如何生成列表:
{1..100}
`seq 起始数 步进长度 结束数`
declare -i SUM=0
-x:将一个变量声明为环境变量
for循环的特殊格式:
for ((控制变量初始化;条件判断表达式;控制变量的修正表达式));do
循环体
done
控制变量初始化:仅在运行到循环代码段时执行一次
控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算而后再做条件判断
while
while CONDITION; do
循环体
done
CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“ true”,则执行
一次循环;直到条件测试状态为“ false”终止循环
因此: CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
进入条件: CONDITION为true;
退出条件: CONDITION为false
until
until CONDITION; do
循环体
done
CONDITION:同上相反
进入条件: CONDITION 为false
退出条件: CONDITION 为true
2016-08-17-15:34:57
原创文章,作者:皱 多利亚,如若转载,请注明出处:http://www.178linux.com/36815
评论列表(1条)
对脚本常见的语句语法总结的和详细,脚本学习更重要的是多看多写,作业要好好完成。