shell编程
编译器 解释器
编程语言: 机器语言 汇编语言 高级语言
静态语言:编译型语言
强类型(变量)
事先转换成可执行格式
C C++ JAVA C#
动态语言:解释型语言
弱类型
边解释边执行
PHP SHELL Python perl
bash:(解释器本身是静态语言开发的)
面向对象 JAVA Python perl C++
面向过程 shell C
变量类型:事先定义数据的存储格式和长度
字符
数值
整型
浮点型:11.23 1.123*10^1
布尔型
逻辑: 1 + 1 > 2
逻辑运算:与 或 非 异或(相同为0)
1:真
0:假
整型:8bit:256
16bit:
32bit:
64bit
变量:内存空间 命名
内存:编址的存储单元
进程:
1+100
编程能力:
脚本编程
shell:弱类型编程语言
强:变量在使用前,必须事先声明,甚至还需初始化:
NULL:
弱: 变量用时声明:甚至不区别类型
变量赋值:VAR_NAME = VALUE
bash变量类型:
环境变量
本地变量(局部变量)
位置变量
特殊变量
本地变量:
(set 省略)VARNAME = VALUE:作用域为整个bash进程
局部变量:
local VALUENAME = VALUE,作用域为当前代码段
环境变量:作用域为当前shell进程及其子进程
export VARNAME = VALUE
VARNAME = VALUE
export VARNAME
“导出”
位置变量:
$1,$2,...
特殊变量:
$?:上一个命令的执行状态返回值
程序执行,可能有两类返回值:
程序执行结果
程序状态返回代码(0-255)
0:正确
1-255:错误执行,系统预留:1,2,127
每执行一个命令,后面紧跟一个执行echo $? ,状态返回代码
输出重定向:
> >> 2> 2>> &>
/dev/null 软件设备,bit bucket,数据黑洞
撤掉变量
unset VARNAME 撤销变量
查看当前shell中的变量:
set
包括环境变量和本地变量
查看当前shell中的环境变量
printenv
env
export
# ANIMALS = pig
# ANIMALS = $ANIMALS:goat
# A = 2
# B = 2
# C = $A + $B
# echo $C
2+3
脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序
1 nano fist.sh #!(shebang指定程序的魔数)
#!/bin/bash(第一行)
#注释行,
cat /etc/fstab
ls /var
bash first.sh 不用给执行权限(好像也没指定路径)
脚本在执行时会启动一个子shell进程(pstree)
命令行中启动的脚本会继承当前shell环境变量
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量
bash:
引用变量: $(VARNAME),括号有时可省略
双引号弱引用,其内的字符串做变量替换
单引号强引用,其内的字符串不做变量替换
练习:写一个脚本,完成以下任务
1 添加5个用户,user1,...,user5
2 每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd
命令的执行结果信息
3 每个用户添加完成后,都要显示用户某某已经成功添加
练习:写一个脚本,完成以下任务
1 使用一个变量保存一个用户名:
2 删除此变量中的用户,且一并删除其家目录
3 显示"用户删除完成"类的信息
本文转自飞行萌51CTO博客,原文链接: http://blog.51cto.com/8527508/1940557,如需转载请自行联系原作者