linux——shell流程控制
2015-09-02 22:14
507 查看
每种语言都有自己的流程控制,判断语句、循环语句。shell和他们一样,if判断、for、while循环等。
then
commands
else
commands
fi
判断条件:主要判断以下三种情况。test 和[ ]
数字比较
字符串比较
文件比较
我们知道c/c++等语言的if语句if(条件)是条件为真时,才执行下面的语句。但是,shell中条件判断为假(返回值是0),才执行下面语句。这也就是为什么命令可以作为判断条件了,命令执行成功时,返回值为0。我们可以得到任意一个命令的返回值echo $?。在while循环中的条件也是这种的。
虽然对于编写代码,并没有卵用,但是,学习不应该止于表面。。。
do
commands
done
list是列表。列表是一大串字符串,那么出问题了,for怎么认识每一个变量值呢,这就是环境变量IFS发挥作用的时刻了,IFS默认值是空格,制表符,换行符。。在list列表当中,只要出现上三种符号则划分出变量值。如果我们划分号不是上三种的时候可以自定义IFS值。
例如:读取文本每行字符,对他们处理为:
#!/bin/bash
OLD_IFS=$IFS
IFS="\n"
for line in `cat filename`
do
echo "$line"
done
IFS=$OLD_IFS
for也可以使用类似c语言的结构
例如:for((i=0;i<10;i++))
do
other commands
done
和c一样,其间也可以使用break结束循环,continue直接进行下一次循环。
if判断:
if 判断条件then
commands
else
commands
fi
判断条件:主要判断以下三种情况。test 和[ ]
数字比较
字符串比较
文件比较
我们知道c/c++等语言的if语句if(条件)是条件为真时,才执行下面的语句。但是,shell中条件判断为假(返回值是0),才执行下面语句。这也就是为什么命令可以作为判断条件了,命令执行成功时,返回值为0。我们可以得到任意一个命令的返回值echo $?。在while循环中的条件也是这种的。
虽然对于编写代码,并没有卵用,但是,学习不应该止于表面。。。
for循环:
for var in listdo
commands
done
list是列表。列表是一大串字符串,那么出问题了,for怎么认识每一个变量值呢,这就是环境变量IFS发挥作用的时刻了,IFS默认值是空格,制表符,换行符。。在list列表当中,只要出现上三种符号则划分出变量值。如果我们划分号不是上三种的时候可以自定义IFS值。
例如:读取文本每行字符,对他们处理为:
#!/bin/bash
OLD_IFS=$IFS
IFS="\n"
for line in `cat filename`
do
echo "$line"
done
IFS=$OLD_IFS
for也可以使用类似c语言的结构
例如:for((i=0;i<10;i++))
while循环:
while test commanddo
other commands
done
和c一样,其间也可以使用break结束循环,continue直接进行下一次循环。
相关文章推荐
- Linux socket 初步
- android wifi 无线调试
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝