愤怒的大鸟 发表于 2015-1-14 20:21:05

来一发Linux shell 流程把持(前提if,轮回for,while)

欢迎大家来到仓酷云论坛!linuxshell有一套本人的流程把持语句,个中包含前提语句(if),轮回语句(for,while),选择语句(case)。上面我将经由过程例子先容下,各个语句利用***。
1、shell前提语句(if用法)
if语句布局

if前提测试语句
then
action

action
else
action
]
fi

假如关于:前提测试语句不是很分明,能够参考:linuxshell逻辑运算符、逻辑表达式详解,也能够参考上面的参数。
1、逻辑运算符


逻辑卷标暗示意义1.关于档案与目次的侦测逻辑卷标!-f经常使用!侦测『档案』是不是存在eg:if[-ffilename]-d经常使用!侦测『目次』是不是存在-b侦测是不是为一个『block档案』-c侦测是不是为一个『character档案』-S侦测是不是为一个『socket标签档案』-L侦测是不是为一个『symboliclink的档案』-e侦测『某个器材』是不是存在!2.关于步伐的逻辑卷标!-G侦测是不是由GID所实行的步伐所具有-O侦测是不是由UID所实行的步伐所具有-p侦测是不是为步伐间传送信息的namepipe或是FIFO(厚道说,这个不太懂!)3.关于档案的属性侦测!-r侦测是不是为可读的属性-w侦测是不是为能够写进的属性-x侦测是不是为可实行的属性-s侦测是不是为『非空缺档案』-u侦测是不是具有『SUID』的属性-g侦测是不是具有『SGID』的属性-k侦测是不是具有『stickybit』的属性4.两个档案之间的判别与对照;比方-nt第一个档案比第二个档案新-ot第一个档案比第二个档案旧-ef第一个档案与第二个档案为统一个档案(link之类的档案)5.逻辑的『和(and)』『或(or)』&&逻辑的AND的意义||逻辑的OR的意义



运算标记代表意义=即是使用于:整型或字符串对照假如在[]中,只能是字符串!=不即是使用于:整型或字符串对照假如在[]中,只能是字符串<小于使用于:整型对照在[]中,不克不及利用暗示字符串>年夜于使用于:整型对照在[]中,不克不及利用暗示字符串-eq即是使用于:整型对照-ne不即是使用于:整型对照-lt小于使用于:整型对照-gt年夜于使用于:整型对照-le小于或即是使用于:整型对照-ge年夜于或即是使用于:整型对照-a两边都建立(and)逻辑表达式Ca逻辑表达式-o双方建立(or)逻辑表达式Co逻辑表达式-z空字符串-n非空字符串

shell下令,能够依照分号支解,也能够依照换行符支解。假如想一行写进多个下令,能够经由过程“;”支解。
如:
$a=5;if[];thenechook;fi;
ok

实例:(test.sh)
#!/bin/sh
scores=40;
if[[$scores-gt90]];then
echo"verygood!";
elif[[$scores-gt80]];then
echo"good!";
elif[[$scores-gt60]];then
echo"pass!";
else
echo"nopass!";
fi;




前提测试有:[[]],[],test这几种,注重:[[]]与变量之间用空格分隔。

2、轮回语句(for,while,until用法):


[*]for轮回利用***(for/do/done)
语法布局:
1.for…in语句
for变量inseq字符串
do
action
done
申明:seq字符串只需用空格字符支解,每次for…in读取时分,就会按按次将读到值,给后面的变量。
实例(testfor.sh):
#!/bin/sh
foriin$(seq10);do
echo$i;
done;



seq10发生123。。。。10空格分开字符串。
2.for((赋值;前提;运算语句))
for((赋值;前提;运算语句))
do
action
done;
实例(testfor2.sh):
#!/bin/sh
for((i=1;i<=10;i++));do
echo$i;
done;







[*]while轮回利用(while/do/done)
while语句布局
while前提语句
do
action
done;
实例1:
#!/bin/sh
i=10;
while[[$i-gt5]];do
echo$i;
((i--));
done;
运转了局:========================
shtestwhile1.sh
10
9
8
7
6
实例2:(轮回读取文件内容:)
#!/bin/sh
whilereadline;do
echo$line;
done</etc/hosts;

运转了局:===================
shtestwhile2.sh

#Donotremovethefollowingline,orvariousprograms
#thatrequirenetworkfunctionalitywillfail.
127.0.0.1centos5localhost.localdomainlocalhost


[*]until轮回语句
语法布局:
until前提
do
action
done
意义是:直到满意前提,就加入。不然实行action.
实例(testuntil.sh):
#!/bin/sh
a=10;
until[[$a-lt0]];do
echo$a;
((a―));
done;
了局:
shtestuntil.sh
10
9
8
7
6
5
4
3
2
1
0
3、shell选择语句(case、select用法)


[*]case选择语句利用(case/esac)
语法布局
case$argin
pattern|sample)#arginpatternorsample
;;
pattern1)#arginpattern1
;;
*)#default
;;
esac
申明:pattern1是正则表达式,能够用上面字符:
*恣意字串
?恣意字元
a,b,或c三字元个中之一
从a到n的任一字元
|多重选择

实例:
#!/bin/sh
case$1in
start|begin)
echo"startsomething"
;;
stop|end)
echo"stopsomething"
;;
*)
echo"Ignorant"
;;
esac
运转了局:======================

testcase.shstart
startsomething


[*]select语句利用***(发生菜单选择)
语法:
select变量nameinseq变量
do
action
done
实例:
#!/bin/sh
selectchin"begin""end""exit"
do
case$chin
"begin")
echo"startsomething"
;;
"end")
echo"stopsomething"
;;
"exit")
echo"exit"
break;
;;
*)
echo"Ignorant"
;;
esac
done;
运转了局:



申明:select是轮回选择,一样平常与case语句利用。
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!

因胸联盟 发表于 2015-1-24 14:31:15

要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。

灵魂腐蚀 发表于 2015-2-1 18:51:14

掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。

蒙在股里 发表于 2015-2-7 17:14:20

当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。

金色的骷髅 发表于 2015-2-22 22:42:22

我感觉linux的学习,学习编程~!~!就去学习C语言编程!!

冷月葬花魂 发表于 2015-3-7 06:40:09

虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。

老尸 发表于 2015-3-14 17:21:58

在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。

精灵巫婆 发表于 2015-3-21 14:45:46

下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。
页: [1]
查看完整版本: 来一发Linux shell 流程把持(前提if,轮回for,while)