Linux shell脚本

Shell脚本:

1.shell基础

  •    shell脚本语言的本质:
            a解释型语言
            b.shell命令的有序集合

  • 基本过程为三步
          1.建立shell文件
          2.更改权限 (用chmod命令修改权限)
          3.执行脚本文件 ./*.sh

  • shell变量
    shell允许用户建立变量存储数据,但不支持数据类型(整形、字符、浮点型),将任何赋给变量的值都解释为一串字符
                                                      Variable=value
          
                        - 命名规则同C++命名规则
                          count=1
                          echo $count

  • Bourne shell有如下四种变量:

         1.用户自定义变量
         2.位置变量即命令行参数
         3.预定义变量
         4.环境变量
           
                 - 用户自定义变量
                        在shell编程中通常使用大写变量,方便识别。
                                                COUNT=1
                        变量的调用:在变量名前加$。
                                                echo $HOME
                        Linux Shell/bash从右向左赋值。
                        使用unset命令删除变量的赋值。
- 位置变量
                         $0:与键入的命令行一样,包含脚本文件名。
                         $1… $9分别包含第一个到第九个命令行参数
                         $#:包含命令行参数的个数
                         $@:包含所有命令行参数:“$1…$9”
                         $?:包含前一个命令的退出状态
                         $*:包含所有命令行参数
                         $$:包含正在执行的进程ID号

  • 常用Shell环境变量
                            HOME:/etc/passwd文件中列出用户的主目录
                            IFS:Internal field separator,默认为空格,Tab及换行符
                            PATH:shell搜索路径
                            PS1,PS2:默认提示符($)及换行提示符(>)
                            TERM:终端类型
    Shell循环
    Shell中有3中循环,分别是for,while,until,until与while正好相反,前者条件为假则执行,后者条件为真时执行。基本和C语言中额循环没什么区别。只是语法上有些差异。

for循环

格式:

for var in word1 word2 ……

in

command

command

……

done

谈到循环,就不得不说$@变量,它代表该shell脚本的所有参数。所以,要写一个命令行中键入的所有参数的程序就应该向下面这样:

for arg in “$@”

do

echo $arg

done

说到$@就不得不说for循环的另一种形式,就是缺省参数

for var

in

command

command

……

done

上面的程序等价于:

for var in “$@”

in

command

command

……

done

下面的代码中,变量i在每次迭代的过程里都会保存一个字符,范围从a到z:

for i in {a…z}; do actions; done;

for 循环也可以采用C语言中的for循环格式。例如:

for (( i=0; i<10; i++))

{

commands;

}

until循环

until很简单,只要记住它与while正好相反即可,即条件为假继续执行,条件为真,就跳出循环。

while循环

我们知道shell中的if语句结束标识是fi,与c语言相差很大。既然我们已经知道了for循环的形式,那while也就不难了,因为shell不能与它自己差别很大的。

while command1

do

command

command

……

done

示例:

从1数到5的小程序

i=1

while[ “$i” -le 5 ]

do

echo$i

i=$((i + 1 ))

done

正如for循环中,我们穿插介绍了$@一样,讲到while循环,可以顺便介绍一下shift,因为while循环经常跟shift结合使用。shift命令使位置变量下移,即使得$1=$2,$2= 3 , 最 后 3,最后 3#还要减少1,也就是说把第一个参数删除了,而且找不回来了。如果我们要写一个打印所有参数的程序,就因该向这样的:

while[ “$#” -ne 0 ]

do

echo"$1"

shift

done

break和continue

说到循环,肯定不能漏掉break和,continue,它们的作用和在C语言中一模一样,完。

你可能感兴趣的:(脚本)