老尸 发表于 2015-1-14 20:21:05

来一发shell 步伐布局

如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!一复杂指令
command[-option]

command能够是别号,函数名,内置下令,内部可实行步伐或剧本

二shell把持布局复合语句
forname[inword];dolist;done
for((expr1;expr2;expr3));dolist;done
selectname[inword];dolist;done

iflist;thenlist;[eliflist;thenlist;]...[elselist;]fi


whilelist;dolist;done
untillist;dolist;done

[function]name(){list;}
casewordin[[(]pattern[|pattern]...)list;;]...esac


1.[]暗示可选项
2.;可使用<newline>行号取代,用来支解token(下令序列)


Ø上述切合语句中的:
if;then;elif;else;fi
forin;do;done
while;do;done
until;do;done
casein;esac
上述词前必需有;大概<newline>开首

三.CompoundCommands复合下令
compoundcommand(复合下令)是以下情形之一:
(list)
list序列将在一个子shell中实行。变量赋值和影响shell情况变量的内建下令在下令停止后不会复兴感化。前往值是序列的前往值。
{list;}
list序列将在以后shell情况中实行。序列必需以一个新行符或分号停止。这类做法也称为groupcommand(下令组)。前往值是序列的前往值。注重与元字符(和)分歧,{和}是reservedwords(保存字),必需呈现在可以辨认保存字的场所。因为它们不会发生断词(causeawordbreak),它们和序列之间必需用空格分隔。
((expression))
表达式expression将被求值。求值划定规矩鄙人面的算术求值(ARITHMETICEVALUATION)章节中形貌。假如表达式的值非零,前往值就是0;不然前往值是1。这类做法和let"expression"等价。
[[expression]]
前往0或1,取决于前提表达式expression求值的情形。表达式是由上面CONDITIONALEXPRESSIONS前提表达式章节中形貌的原语(primaries)构成。[[和]]中的词不会举行词的拆分和路径的扩大处置;而tilde扩大,参数和变量扩大,算术扩大,下令交换,函数交换和援用的往除则都将举行。
当利用==和!=操纵符时,操纵符右侧的字符串被以为是一个形式,依据上面PatternMatching(形式婚配)章节中的划定规矩举行婚配。假如婚配则前往值是0,不然前往1。形式的任何局部能够被援用,强迫使它作为一个字符串而被婚配。
-------------------------
if表达式特性:
表达式能够用以下操纵符分离起来。依据优先级的降序列出以下:
(expression)
前往表达式expression的值。括号能够用来提拔操纵符的优先级。
!expression
前往真,假如表达式expression前往假。
expression1&&expression2
前往真,假如表达式expression1和expression2都前往真。
expression1||expression2前往真,假如表达式expression1大概expression2两者之一前往真。
&&(与)和||操纵符不会对表达式expression2求值,假如expression1能够决意全部前提表达式的前往值的话。
Lists序列
list(序列)是一个或多个管道,用操纵符;,&,&&,或||分开的序列,而且能够选择用;,&,或<newline>新行符停止.
这些序列操纵符中,&&和||优先级不异,其次是;和&,它们的优先级是不异的。
序列中能够有一个或多个新行符来分开下令,而不是利用分号分开。
假如一个下令是由把持操纵符&停止的,shell将在背景的子shell中实行这个下令。shell不会守候下令实行停止,前往形态老是0。以分号;分开的下令会被按次实行;shell会守候每一个下令顺次停止。前往形态是最初实行的下令的前往形态。
把持操纵符&&和||分离代表AND和OR序列。一个AND序列的情势是
command1&&command2
command2只要在command1前往0时才被实行。
一个OR序列的情势是
command1||command2
command2只要在command1前往非0形态时才被实行。AND和OR序列的前往形态是序列中最初实行的下令的前往形态。
n出格注重ifexpression中的&&||和BashLists序列中的&&||寄义是纷歧样的

---------------------------------
n几个含混观点切实其实定
Ø!&&||可使用到表达式毗连顶用于if等前提判别
Ø-oCa用在[]表达式中,&&||既能够用于[[]]外部,也能够用于毗连两个[]
if[]&&[]或if[]||[]
---------------------------------------
if["$an"=Y-o"$an"=y]
=if["$an"=Y]||["$an"=y]
=if[["$an"=Y||"$an"=y]]
如上三个等价,以下三个等价
-------------------------------------
if["$an"=Y-a"$an"=y]
=if["$an"=Y]&&["$an"=y]
=if[["$an"=Y&&"$an"=y]]
实比方下:
if[!"${PEERNIS}"="no"];then
if!["test"=="test"];thenecho"ok";fi
if[!"test"=="test"];thenecho"ok";fi
if[-x/etc/rc.d/init.d/ypbind]&&[-r/var/run/ypbind.pid];then
serviceypbindrestart>/dev/null2>&1
fi
#if[!"test"=="tet"-a"hi"=="hi"];thenecho"ok";fi
ok
#if[!"test"=="test"-o"hi"=="hi"];thenecho"ok";fi
ok
#if[!"test"=="test"-a"hi"=="hi"];thenecho"ok";fi
#if[!"test"=="tes"-a"hi"=="hi"];thenecho"ok";fi
ok
#if[!"test"=="tes"]&&["hi"=="hi"];thenecho"ok";fi
ok
#if[!"test"=="test"]&&["hi"=="hi"];thenecho"ok";fi
#if[!"test"=="test"]||["hi"=="hi"];thenecho"ok";fi
ok
#if!["test"=="test"]&&["hi"=="hi"];thenecho"ok";fi
#if!["tst"=="test"]&&["hi"=="hi"];thenecho"ok";fi
ok
#if[["tst"=="test"&&"hi"=="hi"]];thenecho"ok";fi
#if[["test"=="test"&&"hi"=="hi"]];thenecho"ok";fi
ok
#if[["est"=="test"||"hi"=="hi"]];thenecho"ok";fi
ok
Øif语句的换种写法:
if;thencomand;fi=&&comd
if[!condition];thencomand;fi=!&&comd

Øif前提中的重定向,制止尺度输入发生
if/sbin/lvmvgscan>/dev/null2>&1;then
action$"SettingupLogicalVolumeManagement:"/sbin/lvmvgchange-ay
fi
#ifls;thenecho"ok";fi
his.txtls.pdfmy.pcapset.shtcp.dumptcpdump.pdftcpdump.txttmpt.pcapt.sh
ok
#ifls>/dev/null2>&1;thenecho"ok";fi
ok

Ø可用于支解下令序列token分开符以下:
controloperator
Atokenthatperformsacontrolfunction.Itisoneofthefollowingsymbols:
||&&&;;;()||&<newline>
同理一个完全的指令,不管是切合语句语句,仍是可实行步伐或剧本,内置下令必需以行首开首大概由下面的controloperator支解
欢迎大家来到仓酷云论坛!

分手快乐 发表于 2015-1-16 09:38:45

来一发shell 步伐布局

安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。

仓酷云 发表于 2015-1-24 07:43:42

熟读Linux系统有关知识,如系统目录树,有关内容可购书阅读或搜索论坛。

透明 发表于 2015-2-1 09:41:59

对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。

老尸 发表于 2015-2-7 05:44:25

Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。

灵魂腐蚀 发表于 2015-2-21 10:55:11

一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。

因胸联盟 发表于 2015-3-6 21:16:23

我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。

若相依 发表于 2015-3-20 21:49:33

一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢。
页: [1]
查看完整版本: 来一发shell 步伐布局