shell的一些基础东西(流程控制等。。。)

转载 2011年01月13日 14:28:00

为什么学习脚本

4.4.2 脚本的执行

   1.将文件改为可以执行的属性即x属性,然后执行改文件
   2.文件后缀名为.sh,用sh来执行

   "和'最大的不同在于能不能保存变量内容,单引号里的内容都将变成单纯的字体,而不是特殊的字体.

4.4.3 卷标与运算符declare

   不定义变量,那么该变量是呈现字符串的形式,所以任何变量都是字符串

  number1=2*3+5*13-32+25
 declare number2=2*3+5*13-32+25

在最后输出结果时,$number1为2*3+5*13-32+25,而number2为64

4.4.4 交互式脚本

  最简单的交互式指令是read指令,read功能就是将键盘上输入的内容放到变量中.

  eg:[root@test test]# read name
     VBird
     [root@test test]# echo $name
     VBird

 怎么样定义脚本的参数代号
     [root@test test]myscript. opt1 opt2 opt3 opt4
                       $0      $1   $2   $3   $4
  从上面的例子可以看出,只要变量名称为$0,就表示为myscript也就是说 :

  $0:myscript. 亦即脚本的文件名
  $1:opt1,亦即第一个附加参数
  $2:opt2,
  $3:opt3

  eg:
 root@wwwvbird_shells]# cat parm.sh
#!/bin/bash
echo "This script's nmae => $0"
echo "parameters $1 $2 $3"

[root@www vbird_shells]# sh parm.sh hello1 hello2 hello3
This script's nmae => parm.sh
parameters hello1 hello2 hello3

4.4.5 脚本逻辑判断式与表达式

  逻辑判断式:
关于文件目录:
-f      常用!检测文件是否存在
-d      常用!检测目录是否存在
-b      检测是否为一个block文件
-c      检测是否为一个character文件
-S      检测是否为一个socket标签文件
-L      检测是否为一个符号链接文件
-e      检测某个东西是否存在!可以是任何东西.

关于程序
-G      检测是否由GID所执行的程序拥有
-O      检测是否由UID所执行的程序拥有
-p      检测是否为程序间传送信息的name pipe 或FIFO

关于文件的属性的检测
-r      是否为可读
-w      是否为可写
-x      是否为可执行
-s      是否为非空白文件
-u      是否具有SUID属性
-g      是否具有SGID属性
-k      是否具有sticky bit 属性

两个文件之间的判断比较
-nt    第一个文件比第二个文件新
-ot    第一个文件比第二个文件旧
-ef    第一个文件与第二个文件为同一个文件(如链接文件)

与或非
&&     逻辑与
||     逻辑或

运算符:
=      等于
!=     不等于
<      小于
>      大于
-eq    等于
-ne    不等于
-lt    小于
-gt    大于
-le    小于或等于
-ge    大于或等于
-a     双方都成立(and)
-o     单方成立(or)
-z     空字符串
-n     非空字符串

4.4.6 条件判断

4.4.6.1 if then fi

if [ 条件一 ] &&(||) [ 条件二 ]; then
elif [ 条件三 ] &&(||) [ 条件四 ]; then

else
fi

这里有强调的是
1.在[]中。只能有一个判断式
2.在[]和[]中,可以使用&&或||结合判断式
3.每一个独立的组件之间需要用空格键隔开


4.4.6.2 case .. esac

语法:
case 种类方式(string) in
      种类式一)
            程序执行段
            ;;
      种类式二)
            程序执行段
            ;;
        *)
          echo "Usage: {种类方式一|种类方式二}"
          exit 1
esac

种类方式(string)的格式有两种:

     直接输入与交互式(先read 变量名,在用$变量名)

4.4.6.3 循环

for:
for((条件1;条件2;条件3))

eg:
[root@www vbird_shells]# cat for.sh
#!/bin/bash

declare -i s
for ((i=1; i<=100;i=i+1))
do
        s=s+i
done
echo "The count is ====> $s"


for variable in variable1 variable2 ...

root@wwwvbird_shells]# cat foruser.sh
#!/bin/bash

account=`cut -d ":" -f1 /etc/passwd |sort`
echo "The following is your linux server's account "
for i in $account
do
        echo $i
done


while:
[root@www vbird_shells]# cat while.sh
#!/bin/bash

declare -i i
declare -i s
while [ "$i" != "101" ]
do
        s=s+i
        i=i+1
done
echo "The count is ====> $s"

until:
[root@www vbird_shells]# cat unitl.sh
#!/bin/bash

echo "Press Y/y to stop"
until [ "$yn" = "Y" ] || [ "$yn" = "y" ]
do
        read yn
done

4.4.6.3  调试脚本

#sh [-nvx] scripts
-n :不执行脚本,查询脚本内的语法,若有错则列出
-v :在执行脚本之前,先将脚本的内容输出在屏幕上
-x :将用到的脚本内容显示在屏幕上,与-v稍有不同.

 

补基础之shell和Makefile-2.2.uboot和系统移植第2部分

-
  • 1970年01月01日 08:00

linux——shell流程控制

每种语言都有自己的流程控制,判断语句、循环语句。shell和他们一样,if判断、for、while循环等。 if判断:          if 判断条件          then      ...
  • u012201343
  • u012201343
  • 2015-09-02 22:14:55
  • 575

JAVA语法基础之流程控制

在进行程序设计的时候,我们会经常进行逻辑判断,根据不同的结果做不同的事,或者重复做某件事,我们对类似这样的工作称为流程控制。在Java中,流程控制分为两大类:选择和循环。下面就依次来介绍这两类。 一、...
  • jianggujin
  • jianggujin
  • 2015-12-05 14:28:24
  • 2112

Linux Shell 流程控制语句

* 本文主要介绍一些Linux Shell 常用的流程控制语句*
  • jing_EVA
  • jing_EVA
  • 2015-07-15 14:27:13
  • 494

Linux shell编程

  • 2012年09月30日 09:40
  • 332KB
  • 下载

shell入门之流程控制语句

1.case脚本:#!/bin/bash #a test about case case $1 in "lenve") echo "input lenve";; "hello") ec...
  • u012702547
  • u012702547
  • 2015-07-10 16:38:40
  • 1239

linux unix shell总结(1)

  • 2009年01月21日 00:15
  • 14B
  • 下载

Linux之shell编程之条件判断与流程控制

Linux之shell编程之条件判断与流程控制 文件判断 -b 判断该文件是否存在,并且是否为块设备文件(是为真) -c 判断该文件是否存在,并且是否为字符设备文件(是为真) -d 判断该文件是否存在...
  • zhaojianyin
  • zhaojianyin
  • 2017-03-12 16:51:38
  • 231

shell的整理

shell编程的整理目录环境 变量 字符串 传递参数 数组 运算符 echo/printf test命令 流程控制 函数 输入输出重定向 文件包含 1 环境1.1 头部定义解释器:#/bin/sh 1...
  • cabing2005
  • cabing2005
  • 2016-10-09 16:00:45
  • 221

Linux shell 编程

  • 2011年10月03日 21:41
  • 327KB
  • 下载
收藏助手
不良信息举报
您举报文章: shell的一些基础东西(流程控制等。。。)
举报原因:
原因补充:

(最多只允许输入30个字)