shell脚本的本质 —— shell脚本语言是解释型语言 —— shell脚本的本质 shell命令的有序集合 shell编程的基本过程 基本过程分为三步: 1、建立shell文件(以.sh结尾) 例: vi shell1.sh date 2、赋予shell文件执行权限 用chmod命令修改权限 chmod 740 shell1.sh 3、执行shell文件 直接在命令行上调用shell程序 ./shell1.sh shell变量 ——shell允许用户建立变量存储数据,但不支持数据类型(整型、字符、 浮点型),将任何赋给变量的值都解释为一串字符 用户自定义变量 —— 在shell编程中通常使用全大写变量,方便识别 COUNT=1 —— 变量的调用:在变量前加$ echo $COUNT —— Linux Shell/bash从右向左赋值 Y=y X=$Y echo $X y —— 使用unset命令删除变量的赋值 Z=hello echo $Z hello unset Z echo $Z 没有值 位置变量 —— $0 与键入的命令行一样,包含脚本文件名 —— $# 包含命令行参数的个数 —— $@ 包含所有命令行参数 —— $? 包含前一个命令的退出状态 —— $* 包含所有命令行参数 —— $$ 包含正在执行进程的ID号 环境变量 可通过export或env来查看 常见环境变量 HOME:/ect/passwd文件中列出的用户主目录 IFS:Internal File Separator,默认为空格,tab及换行符 PATH:shell搜索路径 PS1,PS2:默认提示符($)及换行提示符(>) TERM:终端类型,常用的有vt100,ansi,vt200,xterm等
shell功能性语句 shell程序由零或多条shell语句构成。shell语句包括三类:说明性语句、 功能性语句和结构性语句。 —— 说明性语句: 以#号开始到结束,不被解释执行 #!/bin/bash这句话告诉OS用那种类型的shell来解释执行该程序 —— 功能性语句: 任意的shell命令、用户程序或其他shell程序 —— 结构性语句: 条件测试语句、多路分支语句、循环语句、循环控制语句等。 read语句 —— read var echo $var 输入什么输出什么 expr命令(运算符两边要有空格) —— 算术运算命令包括+、-、\*、/、% expr 12 + 5 \* 3 27 test语句(0为真) —— test语句可测试三种对象: 字符串 整数 文件属性 —— 每种测试对象都有若干测试操作符 —— 例如: test "$answer" = "yes" 变量answer的值是否为字符串yes test -d tmp 测试tmp是否为一个目录名 test $num -eq 18 变量num的值是否为整数18 字符串测试 s1 = s2 测试两个字符串的内容是否完全一样 s1 != s2 测试两个字符串的内容是否有差异 -z s1 测试s1字符串的长度是否为0 -n s1 测试s1字符串的长度是否不为0 整数测试 a -eq b 测试a与b是否相等 a -ne b 测试a与b是否不相等 a -gt b 测试a是否大于b a -ge b 测试a是否大于等于b a -lt b 测试a是否小于b a -le b 测试a是否小于等于b 文件类型测试 -d name 测试name是否为一个目录 -e name 测试一个文件是否存在 -f name 测试name是否为普通文件 -L name 测试name是否为符号链接 -r name 测试name文件是否存在且为可读 -w name 测试name文件是否存在且为可写 -x name 测试name文件是否存在且为可执行 -s name 测试name文件是否存在且长度不为0 f1 -nt f2 测试文件f1是否比文件f2更新 f1 -ot f2 测试文件f1是否比文件f2更旧 条件语句(0为真) if...then...fi 语法结构 if 表达式 then 命令表 fi ——如果表达式为真,则执行命令表中的命令;否则退出if语句,执行 fi后面的语句 —— if和fi是条件语句的语句括号,必须成对使用 —— 命令表中的命令可以是一条,也可以是若干条 例:if [ -f $1 ] then echo "File $1 exists" fi if...then...else...fi 语法结构: if 表达式 then 命令表1 else 命令表2 fi 多路分支语句 case...esac 多路分支语句case用于多重条件测试,语法结构清晰自然,其语法为: case 字符串变量 in 模式1) 命令表1 ;; 模式2|模式3) 命令表2 ;; ...... 模式n) 命令表n ;; esac 循环语句for 当循环次数已知或确定时,使用for循环语句来执行一条或一组命令。 格式为: for 变量名 in 单词表 do 命令表 done 变量依次取单词表中的各个单词,每取一次单词,就执行一次循环体中的 命令,循环次数由单词表中的单词数确定。命令表中的命令可以时一条, 也可以是由分号或换行符分开的多条。 循环语句while 语法结构: while 命令或表达式 do 命令表 done