首页 > 代码库 > shell小结
shell小结
一、基本变量
linux脚本中的变量不需要事先声明,而是直接定义使用(这点不同于其他高级编程语言中变量的使用)bash变量类型分为本地变量和环境变量。
本地变量:只对当前的shell有效,对其他shell及其子shell没效
环境变量:对当前shell进程及其子shell有效,对其它的shell进程无效。
位置变量:$1, $2, ..., ${10};$1为第一个输入的变量$0为函数的本身,$#和$@为总共输入变量的数量。
特殊变量:$?
$$: Shell本身的PIDProcessID
$!: Shell最后运行的后台Process的PID
$?: 最后运行的命令的结束代码返回值
$-: 使用Set命令设定的Flag一览
$*: 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@: 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#: 添加到Shell的参数个数
$0: Shell本身的文件名
$1$n: 添加到Shell的各参数值。$1是第1参数、$2是第2参数…
变量的引用 " ":弱引用,里面的变量会被替换;
‘ ‘:强引用,里面的所有字符都是字面量,直接输出.
二、基本语句
①if语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | (1)单分支的if语句: if 测试条件; then 选择分支 fi 表示条件测试状态返回值为0时,则执行选择分支
或者另外一种格式: if 测试条件 then 选择分支 fi
(2)双分支的if语句: if 测试条件; then 选择分支1 else 选择分支2 fi 两个分支仅执行其中之一。
(3)多分支的if语句: if 条件1; then 分支1 elif 条件2; then 分支2 elif 条件3; then 分支3 ... else 分支n fi |
②、case语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | case 语句:有多个测试条件时,case语句会使得语法结构更明晰
格式: case 变量引用 in PATTERN1) 分支1 ;; PATTERN2) 分支2 ;; ... *) 分支n ;; esac
|
③、for语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 格式: for VAR_NAME in LIST do 循环体 done
或者可以写成: for VAR_NAME in LIST ;do 循环体 done
LIST:列表,中间包括一个或多个元素
退出条件:遍历结束
for的第二种使用格式 : for ((初始条件;测试条件;修改表达式)); do 循环体 done |
④、while语句
1 2 3 4 5 | while 测试条件; do 循环体 done
如测试结果为“真”,则进入循环;退出条件为,测试条件为假; |
⑤、until语句
1 2 3 4 5 | until 测试条件; do 循环体 done
如果测试结果为“假”,则进入循环;退出条件为,测试条件为真; |
⑥、函数
(函数要先定义,然后才能使用)
1 2 3 4 5 6 7 8 9 | 语法: 两种格式: function F_NAME { 函数体 }
F_NAME() { 函数体 } |
⑦、信号捕捉
trap: 可以在信号出现时捕获信号和执行其他命令
1 2 3 4 5 6 7 8 9 10 11 | trap CMDs SIGNALs Linux使用信号与系统上运行的进程进行通信。常用的信号 1 SIGHUP 挂起进程 2 SIGINT 中断进程 3 SIGQUIT 停止进程 9SIGKILL 无条件终止进程 15 SIGTERM 如果可能的话终止进程 17 SIGSTOP 无条件停止但不终止它 18 SIGTSTP 停止或暂停进程但不终止它 19 SIGCONT 重新启动停止的进程 默认情况下bash shell会忽略SIGQUIT3和SIGTERM5信号以防止交互的shell意外终止 捕获信号
|
⑧、数组
本文出自 “从零开始” 博客,请务必保留此出处http://zerofly.blog.51cto.com/4476065/1535138