Shell编程:
编译器,解释器
编程语言: 机器语言、汇编语言、高级语言
静态语言: 编译型语言
强类型(变量)
事先转换成可执行格式
c\c++\JAVA\c#
动态语言: 解释性语言
弱类型
边解释边执行
asp/asp.net/php/shell/python/perl
Shell: 弱类型编程语言
强类型: 变量在使用前,必须事先声明,甚至还需要初始:
弱类型: 变量用时声明,甚至不区分类型:
面向过程: Shell C
面向对象: JAVA Python, perl, c++
变量:内存空间,命名
内存:编址的存储单元
进程:
变量类型: 事先确定数据的存储格式和长度
字符
数值
整形
浮点型
编程能力:
脚本编程
变量赋值: VAR_NAME=VALUE
bash变量类型:
环境变量
本地变量(局部变量)
位置变量
特殊变量
本地变量:
VAR_NAME=VALUE: 作用域为整个脚本进程:
局部变量:
local VARNAME=VALUE 作用域为当前代码段
环境变量: 作用域为当前shell进程及其子进程
export VARNAME=value
"导出"
两种方式:
1. export VARNAME=VALUE
2. VARNAME=VALUE
export VARNAME
位置变量
$1, $2, ...
特殊变量:
$? 上一条命令的执行状态返回值:
程序执行结果
程序状态返回代码(0-255)
0: 正确执行
1-255: 错误执行, 1,2,127 系统预留
输出重定向:
>
>>
2>
2>>
&> 重定向标准输出或错误输出至同一个文件
/dev/null: 软件设备, bit bucket 数据黑洞
秩序执行, 可能有两类返回值:
脚本在执行时,会启动一个子shell进程:
命令行中启动的脚本,会继承当前shell环境变量
系统自动执行的脚本(非命令行启动),就需要自我定义需要各环境变量
撤销变量:
unset VARNAME (千万不要加$)
查看当前shell中的变量
set(包括环境变量和本地变量)
查看当前shell中的环境变量:
printenv
env
export
脚本: 命令的堆砌,按照实际需要,结合命令流程控制机制实现的源程序
shebang: 魔数
#!/bin/bash
练习:写一个脚本,完成以下任务
1. 添加5个用户,user1,user2,...user5
2. 每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息
3. 每个用户添加完成后,都要显示用户xx已经成功添加
练习:写一个脚本,完成以下任务
1. 使用一个变量保存一个用户名:
2. 删除此变量中的用户,且一并删除其家目录
3. 显示“用户删除完成”类的信息
本文出自 “Richier” 博客,请务必保留此出处http://richier.blog.51cto.com/1447532/1631396
原文地址:http://richier.blog.51cto.com/1447532/1631396