shell学习(2)-控制语句(if、case)
2015-12-21 14:13
567 查看
shell控制语句
1、if语句
(1)if....then 结构
if 测试条件
then 语句1
fi
(2)if...then..else结构
if 测试条件
then 语句1
else 语句2
fi
(3)if..then..elif...then...else结构
if 测试条件
then 语句1
elif 测试条件
then 语句2
else 语句3
fi
重要的是编写测试条件,有3种形式:
(1)用test命令;
(2)用[]方括号将测试条件括起来;
(3)用[[条件表达式]],条件表达式用来测试文件的属性和进行字符串比较。
对于test原型是:test 表达式
test一般与系统运算符搭配起来使用,它可以与如下四类运算符共同使用。
1)字符串测试符
-z s1 ,如果字符串s1的长度为0,则测试条件为真。
-n s1,如果字符串s1的长度大于0,则测试条件为真。
s1,如果s1不是空字符串,则测试条件为真。
s1 = s2,s1 等于s2,则真。
s1 != s2 ,s1 < s2,s1 > s2。注:=、 != 、< 、 > 在使用时,两边加空格。
#!/bin/sh
echo please input your name:
read name
if test -n name
then
echo "name is: "$name
else
echo "name is null"
fi
运行结果:
please input your name:
yuanli
name is: yuanli
2)数值测试运算符
n1 -eq n2 整数n1等于n2
n1 -ne n2 整数n1不等于n2
n1 -lt n2 整数n1小于n2
n1 -le n2 整数n1小于或等于n2
n1 -gt n2 整数n1大于n2
n1 -ge n2 整数n1大于或等于n2
3)逻辑运算符
也就是经常用到的与、或、非
!非
-a 逻辑“与”
-o 逻辑“或”
4)文件运算符:测试文件或目录的操作
-r 文件名, 若文件存在并且可读
-w 文件名,若文件存在并且可写
-x 文件名,若文件存在并且可执行
-f 文件名,若文件存在并且是普通文件
-d 文件名,若文件存在并且是目录文件
-p 文件名,若文件存在并且是命名的FIFO文件
-b 文件名,若文件存在并且是块设备文件
-c 文件名,若文件存在并且是字符设备文件
-s 文件名,若文件存在并且是文件的长度大于0
-t 文件描述字,若文件被打开并且文件描述字是与终端设备相关的。
2、case语句
case 字符串 in
模式串表达式1) 语句1;;
模式串表达式2) 语句2;;
esac
注:一个模式表达式可以包含多个模式串,但要用“|”隔开。
#!/bin/sh
echo please input your name
read name
case $name in
tom | jim)
echo your name is tom
;;
yuanli)
echo your name is yuanli
;;
*)
echo i do not know your name
;;
esac
1、if语句
(1)if....then 结构
if 测试条件
then 语句1
fi
(2)if...then..else结构
if 测试条件
then 语句1
else 语句2
fi
(3)if..then..elif...then...else结构
if 测试条件
then 语句1
elif 测试条件
then 语句2
else 语句3
fi
重要的是编写测试条件,有3种形式:
(1)用test命令;
(2)用[]方括号将测试条件括起来;
(3)用[[条件表达式]],条件表达式用来测试文件的属性和进行字符串比较。
对于test原型是:test 表达式
test一般与系统运算符搭配起来使用,它可以与如下四类运算符共同使用。
1)字符串测试符
-z s1 ,如果字符串s1的长度为0,则测试条件为真。
-n s1,如果字符串s1的长度大于0,则测试条件为真。
s1,如果s1不是空字符串,则测试条件为真。
s1 = s2,s1 等于s2,则真。
s1 != s2 ,s1 < s2,s1 > s2。注:=、 != 、< 、 > 在使用时,两边加空格。
#!/bin/sh
echo please input your name:
read name
if test -n name
then
echo "name is: "$name
else
echo "name is null"
fi
运行结果:
please input your name:
yuanli
name is: yuanli
2)数值测试运算符
n1 -eq n2 整数n1等于n2
n1 -ne n2 整数n1不等于n2
n1 -lt n2 整数n1小于n2
n1 -le n2 整数n1小于或等于n2
n1 -gt n2 整数n1大于n2
n1 -ge n2 整数n1大于或等于n2
3)逻辑运算符
也就是经常用到的与、或、非
!非
-a 逻辑“与”
-o 逻辑“或”
4)文件运算符:测试文件或目录的操作
-r 文件名, 若文件存在并且可读
-w 文件名,若文件存在并且可写
-x 文件名,若文件存在并且可执行
-f 文件名,若文件存在并且是普通文件
-d 文件名,若文件存在并且是目录文件
-p 文件名,若文件存在并且是命名的FIFO文件
-b 文件名,若文件存在并且是块设备文件
-c 文件名,若文件存在并且是字符设备文件
-s 文件名,若文件存在并且是文件的长度大于0
-t 文件描述字,若文件被打开并且文件描述字是与终端设备相关的。
2、case语句
case 字符串 in
模式串表达式1) 语句1;;
模式串表达式2) 语句2;;
esac
注:一个模式表达式可以包含多个模式串,但要用“|”隔开。
#!/bin/sh
echo please input your name
read name
case $name in
tom | jim)
echo your name is tom
;;
yuanli)
echo your name is yuanli
;;
*)
echo i do not know your name
;;
esac
相关文章推荐
- shell 编程手记
- shell学习-基础(变量、输入、输出、数组、环境变量)
- [原]linux shell 逻辑判断
- Shell 流程控制
- linux shell自定义函数(定义、返回值、变量作用域)介绍
- shell函数
- shell 脚本学习之一 ------let,echo,变量
- LinuxShell算术运算
- linux下shell脚本启动java程序jar包
- [Erlang_Question30]Erlang shell是如何工作的?
- linux下使用shell查看apache IP访问量
- mac终端下运行shell脚本
- 《Linux命令、编辑器与Shell编程》读书笔记7-Linux系统管理
- 【192】PowerShell 相关知识
- Bash远程文件传输命令scp
- 【Linux学习笔记】Shell 基础(1) — Shell简介
- Bourne Shell:控制语句、条件判断、文本处理、常用命令
- 《生活在Linux中》之:prefer function to alias in Bash
- shell脚本攻略第一章总结
- bash(一)