shell入门(2)
来源:互联网 发布:软件 地图周围距离 编辑:程序博客网 时间:2024/06/05 14:49
循环结构
for
格式:
for var_name in value1 value2value3....valuen
do
commond
done
作用:将var_name在value1 value2value3....valuen循环遍历,每遍历一次执行一次commond,遍历完后,循环结束
例:遍历1到5
3 for i in 1 2 3 4 5
4 do
5 echo -n "$i "
6 done
7 echo
C式的for循环:
for ((i = 0 ; i < 6 ; i ++))
do
commond
done
for ((i = 5 ; i > 0 ;i--))
do
commond
done
对于值比较多,有规律的话,采用序列的方式表达:
格式:
for var_name in $(seq start_value step_value ned_value)
do
commond
done
例:遍历
3 #for i in $(seq 0 2 10)
4 for i in `seq 0 2 10`
5 do
6 echo -n "$i "
7 done
8 echo
产生一个1到100的序列循环:
9 for i in `seq 10`
10 do
11 echo -n "$i "
12 done
13 echo
产生一个5到20的序列循环:
14 for i in `seq 5 20`
15 do
16 echo -n "$i "
17 done
18 echo
产生一个5到20的序列循环,且每次增加5:
14 for i in `seq 5 20`
15 do
16 echo -n "$i "
17 done
18 echo
对文件操作
例:遍历/etc下的文件
3 for i in `ls /etc/`
4 do
5 echo $i
6 done
练习:遍历1+2+3+...+100的值
练习:打印99乘法表
-----------------------------------------
while 循环
循环次数不确定,或者死循环等我们可以用while
格式:
while [ condition ]
do
commond
done
作用:判断condition 是否成立,成立执行commond,打印完后,再回到while处,进行再次判断condition是否成立,只有condition不成立的条件下,才会退出循环
例:遍历1+2+3+...+100的值
练习:利用while循环方式创建3个用户,用户名和密码手工提示输入
-----------------------------------------
死循环:
大多数的情况下,我们是要避免一些死循环,但是处于一些特定的目的,我们会可以的构造一些死循环,如监控
写死循环的应注意两点:
1、当条件符合一个条件时,我们可以退出来。
2、如果一直无需退出,必要的时候有sleep语句。
构造一个死循环:
while true
do
commond
done
前面一个例子,监测vsftpd服务,没有启动,我们就启动它,启动就不管了。
while true
do
if ! netstat -tunlp |grep -wvsftpd > /dev/null
then
service vsftpd start >/dev/null
fi
sleep 5
done
------------------------------------------
循环嵌套:
循环里面包含循环。
如:
while []
do
while []
do
commond
done
done
打印一个三角形
*
* *
* * *
* * * *
* * * * *
--------------------------------------
循环控制语句
break:
忽略掉后面的所有语句,跳出循环
continue:
忽略掉后面的所有语句,重新开始新一轮的循环。
例:利用while循环创建3个用户,用户名和密码手工输入,输入用户名时要判断用户是否存在,如果存在要重新输入,密码要输入两次,如果两次输入的不一致,要重新输入。
打印一个空心三角形
*
* *
* *
* *
* *
* * * * *
-------------------------------------------
函数:
把可以重复使用的代码独立,抽象出来,用一个名字将其封装起来。
定义:
function name(){
}
或者
name(){
}
函数使用的时候先定义,再使用。
例:
用函数实现,打印空三角形。
------------------------------
数组:
定义:
a=(1 2 3 a b c "helleoworld")
a[2]="123"
a=([0]="he"[4]="who")
数组元数的访问:
echo ${a[0]} 访问第一个元素
echo ${a[*]} 访问所有元素
echo ${#a[*]} 获取数组元素的个数
复制元数
b=(${a[*]})
---------------------------------------
随机数:
产生一个随机数:echo$RANDOM
产生一个0到100的随机数:echo $[RANDOM%101]
产生一个50到100的随机数:echo $[RANDOM%51 +50]
例:产生随机码
要求:随机码长度为5
有效字符 字符 数字 一些特殊符号
- shell入门(2)
- Linux Shell编程入门 (2)
- [linux]linux Shell编程入门 (2)
- shell入门2
- 2 shell学习入门
- shell入门(又)
- shell入门(一)
- shell入门(1)
- shell入门(一)
- Shell脚本入门(二) - Hello Shell
- shell笔记(1):shell入门
- Shell入门(一)Shell脚本、环境
- Shell入门(五)Shell函数
- Linux Shell编程入门 (2
- SSH (Secure Shell)入门
- Shell入门知识(一)
- shell脚本实例(入门)
- shell 简单入门(一)
- 总结curl,fsocket,pfsocket,stream_socket_client
- shell入门(1)
- js 在线客服
- hdu 3049 Data Processing(扩展欧几里德求逆模)
- 用kgdb 调试模块-第三部分:动态启动kgdb
- shell入门(2)
- oracle 10g 更换主机名或者IP后引起EM (dbconsole) 启动失败的解决方法
- Facebook Android SDK
- itoa 转换
- epoll_create, epoll_ctl和epoll_wait & select函数分析
- java 继承和多态 问题
- ora-12638 credential retrieval failed(身份证明检索失败)
- Android EditText之inputType
- (Jquery功能篇) Jquery UI 相关组件(手风琴、tab分页、进度条、 滚动条、 时间控件)