Linux Shell编程

Linux Shell编程

一、简述

      简单的介绍shell脚本的基本用法。

     shell脚本是 由一些按照一定格式组合起来的shell命令 组成。shell脚本不需要编译就可以直接执行,它是边解释边执行的。

二、命令解释器

       Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。

三、脚本格式

        脚本的第一行:

#!/bin/bash

         这句话的意思是指定一款在/bin/下名字叫 bash 的 Shell 解释器,来解释脚本中的命令。如果系统用的是其他的解释器,就要将/bin/bash 改成相应的名字。

       如一个简单的脚本:hello.sh     (在终端打印"hello shell",并且将hello.sh文件的内容打印出来)

      Linux Shell编程_第1张图片

     注:1)如果没有执行权限的需要添加执行权限,chmod a+x xxx.sh    (表示所有用户都添加执行权限)

             2)除了第一行,后面的'#'号就是注释符,'#'号后面的就是注释内容,会被解释器忽略。

四、变量

       Shell 脚本是一种弱类型语言,在脚本当中使用变量不需要也无法指定变量的“类型”。 缺省状态下,Shell 脚本的变量都是字符串。

      4.1 变量的定义和赋值

             变量名=变量值          (等号两边不能有空格)

            myname="liang"         ( 可以不赋初值:myname=)

     4.2 变量的引用

           在变量名前面加上一个美元符号'$'

           $myname            (引用myname变量的值)

                如:定义一个变量myname并赋初值,然后打印myname变量的值。再从键盘输入一个名字,再打印出来。

                 var.sh 内容:

                 Linux Shell编程_第2张图片

                执行结果:

                Linux Shell编程_第3张图片

     注:不用预先定义变量,可以直接使用变量,用的时候也是定义。

      4.3  变量的种类

      a)   普通的用户自定义变量,比如上面的 myname。

      b)   系统预定义好的环境变量,比如 PATH,SHELL(系统默认使用的命令解释器)。

             

             可以使用env (environment环境)命令查看系统的环境变量。

             Linux Shell编程_第4张图片

      c)   命令行变量,比如$#、$*等 。

变量名 含义
$# 表示位置参数的数量 
$* 表示所有位置参数的内容 
$? 表示命令执行后返回的状态,用于检查上一个命令的执行是否正确;在Linux中,命令退出状态为0表示命令正确执行,任何非0值表示命令执行错误
$$ 表示当前进程的进程号
$! 表示后台运行的最后一个进程号 
$0 表示当前执行的进程名
$1 表示命令行的第一个参数,(就是在执行脚本的时候传递的参数:./xxx.sh arg1 arg2 ......)

                  例子代码:

                                   Linux Shell编程_第5张图片

                  运行结果:

                Linux Shell编程_第6张图片

五、双引号、单引号、反引号的作用

        5.1 双引号:将一连串的字符括起来成为一个"值"。

            在定义变量的时候,如只有一个单词,可以不用加双引号。

             Linux Shell编程_第7张图片

             Linux Shell编程_第8张图片

            如果字符串中多个单词(含有空格,tab制表等特殊符号)时,就需要用双引号括起来,以准确的将整个一个字符串赋值给变量。

            Linux Shell编程_第9张图片

            Linux Shell编程_第10张图片

      5.2 反引号(是波浪号~那个按键):将反引号括起来的内容作为一个命令,然后执行并将结果替换到当前位置。

              Linux Shell编程_第11张图片

              Linux Shell编程_第12张图片

      5.3 单引号:将括起来的内容全部当做是普通字符。

             Linux Shell编程_第13张图片

             Linux Shell编程_第14张图片
六、数组           

        6.1  数组的定义

              Linux Shell编程_第15张图片

              Linux Shell编程_第16张图片

        6.2 输出全部数组元素

              Linux Shell编程_第17张图片

              Linux Shell编程_第18张图片

七、for循环

        7.1 for循环的简单使用

              Linux Shell编程_第19张图片

             Linux Shell编程_第20张图片

         7.2 使用for循环对数组元素进行遍历

             Linux Shell编程_第21张图片

             Linux Shell编程_第22张图片

             或者是:

             Linux Shell编程_第23张图片

         7.3 使用for循环对数组元素进行逐个赋值

             Linux Shell编程_第24张图片

             Linux Shell编程_第25张图片

             Linux Shell编程_第26张图片

八、if语句

        8.1 输入一个数,如果大于10,就打印more,等于10就打印equal,否则打印less。

                Linux Shell编程_第27张图片

                Linux Shell编程_第28张图片

                或者是使用test

               Linux Shell编程_第29张图片

               Linux Shell编程_第30张图片

  8.2  输入一个字符串如果是"apple",就打印tree;否则打印输入的字符串。     

                Linux Shell编程_第31张图片

                Linux Shell编程_第32张图片

九、test语句:

            

语句

含义

说明

test -e file

判断文件 file 是否存在

存在返回 0,否则返回 1

test -r file

判断文件 file 是否可读

可读返回 0,否则返回 1

test -w file

判断文件 file 是否可写

可写返回 0,否则返回 1

test -x file

判断文件 file 是否可执行

可执行返回 0,否则返回 1

test -d file

判断文件 file 是否是目录

是目录返回 0,否则返回 1

test -f file

判断文件 file 是否是普通文件

是普通文件返回 0,否则返回 1

test -s file

判断文件 file 是否非空

非空返回 0,否则返回 1

test s1 = s2

判断字符串 s1 和 s2 是否相同

相同返回 0,否则返回 1

test s1 != s2

判断字符串 s1 和 s2 是否不同

不同返回 0,否则返回 1

test s1 < s2

判断字符串 s1 是否小于 s2

s1 小于 s2 返回 0,否则返回 1

test s1 > s2

判断字符串 s1 是否大于 s2

s1 大于 s2 返回 0,否则返回 1

test -n s

判断字符串 s 长度是否为非 0

s 长度为非 0 返回 0,否则返回 1

test -z s

判断字符串 s 长度是否为 0

s 长度为 0 返回 0,否则返回 1

test n1 -eq n2

判断数值 n1 是否等于 n2

n1 等于 n2 返回 0,否则返回 1

test n1 -ne n2

判断数值 n1 是否不等于 n2

n1 不等于 n2 返回 0,否则返回 1

test n1 -gt n2

判断数值 n1 是否大于 n2

n1 大于 n2 返回 0,否则返回 1

test n1 -ge n2

判断数值 n1 是否大于等于 n2

n1 大于等于 n2 返回 0,否则返回 1

test n1 -lt n2

判断数值 n1 是否小于 n2

n1 小于 n2 返回 0,否则返回 1

test n1 -le n2

判断数值 n1 是否小于等于 n2

n1 小于等于 n2 返回 0,否则返回 1

     

九、case语句

       9.1 输入一个字母,是A就打印"90~100", 是B就打印"70~89", 是C就打印"60~69",是D就打印"<60",其它就打印"again"。

               Linux Shell编程_第33张图片

               Linux Shell编程_第34张图片

十、while循环

       10.1 打印1到10

              Linux Shell编程_第35张图片

              Linux Shell编程_第36张图片

              

       10.2 将1累加到10

               Linux Shell编程_第37张图片

               Linux Shell编程_第38张图片

 

十一、until语句

          11.1  打印1到10

               Linux Shell编程_第39张图片

               Linux Shell编程_第40张图片

十二、休眠/延时

           sleep xxx                 (xxx是秒数)

十三、函数

            13.1 函数的定义与简单的使用

                Linux Shell编程_第41张图片

                Linux Shell编程_第42张图片

十四、一些例子

          14.1 判断文件是否存在

           Linux Shell编程_第43张图片 

          14.2 判断目录是否存在

           Linux Shell编程_第44张图片 

          14.3 获取字符串字符个数,遍历字符串每一个字符

          Linux Shell编程_第45张图片

你可能感兴趣的:(Linux)