本文转自:
说明:在学习linux下shell编程时,可以在看完此篇后再看下接下来的Linux Shell编程基础这篇文章,这两篇文章具有互补作用。
在计划好要程序干什么以及如何使用程序的使用变得更加简单易学之后,程序员就必须以计算机能够理解的方式把他的想法记录下来,告诉计算机他想干什么。这就是要用到的所谓的代码。一般按照如下顺序组织自己的思维:
1. 决定让计算机做哪些任务
2. 确定计算机执行任务的顺序
3. 从shell脚本语言中选择适当的命令来执行那些任务
4. 用linux文本编辑器编辑一个shell脚本,并按任务的执行顺序来组织命令
关于编程的几个术语
输送给计算机的单一一条指令称之为命令——command
集合在一起的多个命令称之为代码——code
为了完成某项任务而组织在一起的所有指令统称为程序——program
Linux中bash shell语音保留的关键字:
case
elif
let
clear
else
read
continue
if
then
echo
for in
while
变量
什么是数据?
程序从预付那儿获得的信息成为数据——data。一个好的程序遵从了下面三个步骤:
1. 从硬盘或文件中获得数据
2. 对数据进行某种适当的处理
3. 把数据显示在屏幕上火存放在一个文件中
字符串——string
字符串其实就是多个字母或字符的集合。一个字符即可能是一个连字符,也可能是在键盘上所能发现的任何东西。字符串也可能经由单一字母或字符组成。一个完整的句子可能是一个字符串。事实上,任何字母、空格、甚至是数字的组合,都可以看成是一个字符串。
数——number
一个数可由任何数字组成,如金钱数、某人的年龄或者身高、体重等。数既可以是负数也可以是正数、整数、分数、小数。在复杂一点,服务器空间,数也可以是字符。数的这种双重身份可能让我们感到疑惑,但是它无法欺骗计算机。如果告诉计算机是某个地址或电话号码的一部分,那么它就会把该数当做一个字母或字符。但是,如果让计算机把某数加起来,那么计算机就会把它当做数而不是字符。
理解什么是变量和值
计算机是知道如何区分用户输入的数据和字符串,但对人来说可能就像“迷×魂×汤”。就对我们读者而言,很容易把55-55-55当做是某个人的保险号,而计算机仅把它当做一个数或一个字符串。
当程序要用那个保险号时,它还必须告诉计算机:“现在是用保险号的时候了,你汉子道它放在哪儿了,对吗?它就放在变量名为SSS下了”
所谓的变量——variable,其实就是计算机中某一特定数的值(如保险号)的地方。而输给这个变量名sss的保险号就是一个值。
变量的分类
Linux使用下列两种分类:
局部变量:有程序员自己建立,且仅供程序员所设计的程序使用。
环境变量:由程序员或他人建立,程序员和他人的程序都可以使用。
Linux条件控制语句
我们一生都在决定。如,你想到哪儿去旅游,是去美国,日本还是法国?
决定是其实是一种明智的选择。但是我们得把它们建立在符合某种条件基础上,如我们有足够的资金去旅游吗?如果条件不成立,即使是最让人神往的选择也只是一种空想。
条件
条件是一种必须存在或不存在的状态。如果存在,则条件为真,否则为假。
Linux中,条件存在有如下两种表达形式:
Ø 单一变量
Ø 一个表达式
比如说,把所有的钱放进钱包(wallet)里。Wallet被称为变量,钱包里的钱被称为变量的值。是否去美国夏威夷,得要看自己的钱包中的钱是否足够。如果不够,则去不了。因此,钱包这个变量的值是零,虚拟主机,这意味着去美国夏威夷旅游的钱不够,条件为假。
又比如说,钱包里有许多许钱。但对于这次旅行来说这些钱足够吗?这得问问我们自己了,看看钱包里的钱是否大于或等于$1000(旅行所需的money)。这就是一个表达式,它将导致真或假两种结果之一。
用变量表示的条件
一个变量的值要么是真要么是假。这通常用非零表示真,零表示假。下面就介绍确定一个变量的值是真还是假的两种方法。第一种方法显示检查变量的值,如下例所示:
If [$HaveEnoughMoney –eq 1]
程序将用等号算符(- eq)来确定变量的值是真还是假。
如果想判断一个条件是否是真,也可以让程序来检测变量的值是否是假,如下所示:
If [$HaveEnoughMoney – ne 0]
不等于算符(- ne)做出的是一种与逻辑相反的判断。如果用- eq算符,那么程序将检测该变量是否是真。相反,如果用- ne算符,那么程序将检测该变量是否不真,即假。
用表达式表示的条件
条件也可以说一个表达式,它要求程序对信息执行的某种操作。譬如,要求程序检测一个变量(如你的银行存款,O(∩_∩)O)的值是否大于某一个特定数。在这种情况下,一个表达式的结果也只可能有两种:真或假,且只能是其中之一,如下例所示:
If [$BankBalance –gt 3000]
-eq
等于
-gt
大于
-lt
小于
-ne
不等于
-ge
大于或等于
-le
小于或等于
程序检测变量BankBalance的值,看它是否大于3000,而这个表达式只有两种可能性:真或假。如果存款大于3000,则为真;存款小于3000,则为假。
If语句
当需要检测一个条件是真还是假的时候,就可以使用if语句。If语句仅仅是告诉程序:“如果条件为真,就执行这些指令,否则跳过这些指令。”
If语法的规则如下:
If {Condition}
Then
Instrution
fi
一般说来,如果Condition存在(即条件Condition为真),程序则执行项目的Instruction。
下面列举两个例子来说明if语句的用法。第一个例子是让程序判断一个盒子是否已经装满了,条件是盒子最多只能装下100个小甜饼。
if [$Quantity –eq 100]
then
echo “The box is full”
fi
这个语句让程序检测一下变量Quantity的值,看它是否为100.如果是,则在屏幕上显示:
The box is full.
否则,就跳过这条语句并移到fi的下一条语句。注意,在这里,fi是一个保留字,它有特殊的含义。(fi表示if语句的结束)
另一个例子,要求程序检测盒子是否已满,及是否还有其他的盒子可以获得。当且仅当这两个条件同时是真时,程序才会报告无法在装甜饼了,如下所示:
if [$Quantity –eq 100] && {$AvailableBoxes –it 1}
then
echo “The box is full and you have no more boxes”
fi
这条语句要求程序检测一下变量Quantity的值,看它是否100,及变量AvailableBoxes的值是否小于1.如果这两个条件都为真,则显示信息:
The box is full and you have no more boxes”
如果变量Quantity的值不是100,且分子也有剩余,程序则跳过这条语句,移到保留字fi的下一条语句。
if else语句
if语句可以使程序一句一个条件来做出某种判断,如果天哦见是真则执行一组规定的指令。
天有泪,烛有泪,天泪有声,烛泪有形,