[笔记]shell脚本中的流程控制
2015-12-29 15:23
621 查看
流程控制:
选择:if,cace
循环:for,while,until
select:条件测试完后根据测试结果决定"选择"或"循环"
命令结束状态变量$?值为0时执行成功,非0失败
if条件判断基本语法:
复合判断:
((算式)) :算式运算结果只有不为0时返回真值0,不必理会特殊字符
[[ 判断式 ]] :注意空格,不用理会特殊字符
test 判断式 :注意特殊符号的转义
[ 判断式 ] :同test,且需注意空格
-a -o 进行 且,或 逻辑组合判断
COMMAND1&& COMMAND2 :逻辑AND,COMMAND1执行成功才执行COMMAND2,COMMAND2成功返回真值0
COMMAND1|| COMMAND2 :逻辑OR,COMMAND1执行不成功才执行COMMAND2,任一个则成功返回真值0
注意:[[ 判断式 ]]中若使用"==""!="且这两个运算符右方的字符串单引号或双引号添加与否导致的结果不同
判断式中字符串与判断符之间的空格
算式判断:
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
文件判断:
-a file 文件存在为真
-b file 文件为块特殊文件为真
-c file 文件为字符特殊文件为真
-d file 目录存在为真
-e file 文件存在为真
-f file 文件为正规文件为真
-g file 文件存在且设置了set group id属性
-h file 符号链接文件
-p file 管道文件
-s file 文件大小大于0
-r file 可读为真
-w file 可写为真
-x file 可执行为真
-O file 文件为有效的使用者所拥有
-G file 文件为有效的组所拥有
-N file 文件存在且自上次读取后曾修改过
file1 -nt file2 文件1比文件2新,或文件1存在但文件2不存在
file1 -ot file2 文件1比文件2旧,或文件2存在但文件1不存在
file1 -ef file2 文件1和文件2参考到相同的设备或inode号
case条件判断基本语法:
for循环基本语法:
while循环基本语法:
until循环基本语法:
select命令基本语法:
break与continue:
在for, while, until, select中若想要提前结束循环,可在循环中使用break N [N为跳出的循环层数,N值大于等于1,为1时可以省略]
在for, while, until, select中使用continue会跳过本次循环,重新开始执行下一个循环
^_^
本文出自 “junight” 博客,请务必保留此出处http://junight.blog.51cto.com/10828785/1729553
选择:if,cace
循环:for,while,until
select:条件测试完后根据测试结果决定"选择"或"循环"
命令结束状态变量$?值为0时执行成功,非0失败
if条件判断基本语法:
#1.if-then基本格式 if 条件测试;then #只有条件测试为真(0)才会继续 命令区域 fi #2.if-then-else基本格式 if 条件测试;then #条件测试为真执行命令区域1,否则执行2 命令区域1 else 命令区域2 fi #3.if完整格式 if 条件测试1;then 命令区域1 elif 条件测试2;then 命令区域2 else 命令区域3 fi #注意: # if ,then在同一行时需用分号隔开 # elif可以有多行而else只能有一行 # 条件测试可以有多种形式,单个命令或管道等 # 测试部分为管道时选取最后一个命令的返回值为条件测试真假值 # 使用!可以对返回值取反,但!与命令间必须有空格隔开
复合判断:
((算式)) :算式运算结果只有不为0时返回真值0,不必理会特殊字符
[[ 判断式 ]] :注意空格,不用理会特殊字符
test 判断式 :注意特殊符号的转义
[ 判断式 ] :同test,且需注意空格
-a -o 进行 且,或 逻辑组合判断
COMMAND1&& COMMAND2 :逻辑AND,COMMAND1执行成功才执行COMMAND2,COMMAND2成功返回真值0
COMMAND1|| COMMAND2 :逻辑OR,COMMAND1执行不成功才执行COMMAND2,任一个则成功返回真值0
注意:[[ 判断式 ]]中若使用"==""!="且这两个运算符右方的字符串单引号或双引号添加与否导致的结果不同
判断式中字符串与判断符之间的空格
算式判断:
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
文件判断:
-a file 文件存在为真
-b file 文件为块特殊文件为真
-c file 文件为字符特殊文件为真
-d file 目录存在为真
-e file 文件存在为真
-f file 文件为正规文件为真
-g file 文件存在且设置了set group id属性
-h file 符号链接文件
-p file 管道文件
-s file 文件大小大于0
-r file 可读为真
-w file 可写为真
-x file 可执行为真
-O file 文件为有效的使用者所拥有
-G file 文件为有效的组所拥有
-N file 文件存在且自上次读取后曾修改过
file1 -nt file2 文件1比文件2新,或文件1存在但文件2不存在
file1 -ot file2 文件1比文件2旧,或文件2存在但文件1不存在
file1 -ef file2 文件1和文件2参考到相同的设备或inode号
case条件判断基本语法:
case 待测项 in 样式1) 命令区域1;; 样式2) 命令区域2;; .... *) 命令区域;; esac #注意: # 待测项符合某一样式则执行对应命令区域 # 命令区域可由单行或多行指令组成,但最后一行指令后须以;;结尾 # 样式*)通常发在最后区域以捕捉其他所有非指定样式
for循环基本语法:
for 变量 in 串行 do 命令区域 done #注: #串行可以是变量或是字符串的组合[彼此间用$IFS所定义的分隔符(默认空格)隔开] # 还可使用"for ((起始条件;终止条件;变化值))"类似C的用法 # for ((;1;)) 可做无穷循环,Ctrl-c终止循环
while循环基本语法:
while 条件测试 do 命令区域 done # 注:while ((1)) 或 while [1] 或 while true 可做无穷循环 ##注意:while中条件测试返回值为真才进入下方循环!!!!
until循环基本语法:
until 条件测试 do 命令区域 done ##注意:until中条件测试返回值为假才进入下方循环!!!!
select命令基本语法:
select 选项变量 in 串行 do 命令区域 done #注:具体用法待补充(-_-)
break与continue:
在for, while, until, select中若想要提前结束循环,可在循环中使用break N [N为跳出的循环层数,N值大于等于1,为1时可以省略]
在for, while, until, select中使用continue会跳过本次循环,重新开始执行下一个循环
^_^
本文出自 “junight” 博客,请务必保留此出处http://junight.blog.51cto.com/10828785/1729553
相关文章推荐
- HBase 常用Shell命令
- .bash_profile VS .bashrc
- Shell中判断各种比较
- shell脚本数据盘分区挂载到/data
- shell中各种括号的作用()、(())、[]、[[]]、{}
- Shell中${}的妙用
- Shell输入输出重定向:Shell Here Document,/dev/null文件
- Shell函数参数
- Shell函数:Shell函数返回值、删除函数、在终端调用函数
- Shell break和continue命令
- Shell until循环
- Shell while循环
- Shell for循环
- Shell case esac语句
- Shell if else语句
- Shell if else语句
- shell printf命令:格式化输出语句
- Shell echo命令
- Shell数组:shell数组的定义、数组长度
- Shell字符串