Shell基本语法

1.    Shell文件的扩展名不要求,约定写成.sh

2.    Shell脚本文件的第一行一般为 :

 #!/bin/bash

“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。

3.    执行Shell脚本程序的两种方式

1>  chmod +x  ./test.sh         #使脚本具有执行权限

./test.sh                            #执行脚本

2>   /bin/bash   test.sh          #直接运行解释器,其参数就是shell脚本的文件名

4.    定义和使用变量

定义变量:variableName="value"       #变量与等号之间不能有空格,首个字符必须为字母,   

                                                                       不能使用bash里面的关键字。

使用变量:$ variableName                   #在变量名字之前加美元符号,推荐所有的变量都是用

                                                                        {}花括号帮助解释器识别变量的边界。

5.    字符串操作

字符串可以用单引号,也可以用双引号,也可以不用引号。

1>     单引号字符串的限制:

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

2>     双引号的优点:

双引号里可以有变量;

双引号里可以出现转义字符。

3>     拼接字符串:{$str 1} {$str2}                 #将str1和str2拼接在一起

4>     获取字符串长度:${#str}                       #获取字符串str的长度

5>     提取字符串:${str:i:n}                           #获取字符串str从第i个字符之后的n个字符的

                                                                       子字符串

6.    Shell数组

1>     定义数组:在Shell中,用括号来表示数组,下标从0开始 ,数组元素用“空格”符号分割开。定义数组的一般形式为:数组名=(值1 值2... 值n)

2>     读取数组:${数组名[下标]}  --> ${arrayName[6]}

     读取数组中的所有元素 :${arrayName[@]}

3>     获取数组长度: ${#arrayName[@]}    或   ${#arrayName[*]}   

      获取数组中单个数组的长度:${#arrayName[i]}   

7.    Shell   echo指令

echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。

1>   显示字符串:echo   “It is a test”

2>   显示结果定向到文件:echo   “It is a test”  > myfile

3>   显示命令执行结果:echo    date

 

8.    Shell   test命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件方面的测试。

1>    数值测试

参数                       说明

-eq                     等于则为真

-ne                    不等于则为真

-gt                      大于则为真

-ge                    大于等于则为真

-lt                     小于则为真

-le                  小于等于则为真

基本格式:   test   ${num1} -eq ${num2}

2>     字符串测试

参数                             说明

=                                等于则为真

!=                              不相等则为真

-z   字符串          字符串长度伪则为真

-n   字符串          字符串长度不伪则为真

基本格式:   test    num1=num2

3>     文件测试

参数                                说明

-e   文件名       如果文件存在则为真

-r   文件名        如果文件存在且可读则为真

-w  文件名       如果文件存在且可写则为真

-x   文件名       如果文件存在且可执行则为真

-s   文件名       如果文件存在且至少有一个字符则为真

-d   文件名       如果文件存在且为目录则为真

-f   文件名        如果文件存在且为普通文件则为真

-c   文件名       如果文件存在且为字符型特殊文件则为真

-b   文件名       如果文件存在且为块特殊文件则为真

基本格式:test   -e   file

4>     Shell还提供了与(! )、或( -o )、非( -a )三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低。

 

9.      Shell  if else 语句

Sh的流程控制不能为空,如果else分支没有语句执行,就不要写这个else。

1>     if  else格式

if  condition

then

        command1

        command2

        …

        commandn

else

        command

fi

2>     if else-if  else格式

if    condition1

then

         command

elif  condition2

         command2

else

         commandn

fi

3>     if else语句经常与test命令结合使用,也就是说test命令一般作为if的condition

4>      

10.  Shell   case 语句

case语句格式如下:

case  值  in

模式1)

                command1

                …

                commandn

                ;;

模式2)

             command1

                …

                commandn

                ;;

esac

取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

11.  Shell   for循环

for循环一般格式为:

for变量名 in列表

do

                       command1

         ...

         commandn

done

当变量值在列表里,for循环即执行一次所有命令,使用变量名获取列表中的当前取值。

 

12.  Shell  while循环

while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。

其格式为:

while   命令

do

      command1

      command2

      ...

       commandn

done

 

13.  Shelluntil循环

until循环执行一系列命令直至条件为真时停止。

其格式为:

until   条件

           command1

           command2

           ...

            command

 

done

14.  Shellbreak和continue命令

break命令允许跳出所有循环(终止执行后面的所有循环);

ontinue命令不会跳出所有循环,仅仅跳出当前循环。

 

15.  read  命令

从标准输入中读取数据至变量中。

例:read     value              #读取标准输入值至变量

         echo    ${value}          #使用读取的变量

16.  Shell函数

shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数。

函数的定义格式如下:

函数名(  ) {

         command1

         command2

         ...

         commandN

}

如果愿意,可在函数名前加上关键字function,这取决于使用者。

function 函数名( ) {

         command1

         command2

         ...

         commandN

        [ return value ]

}

函数返回值,可以显示增加return语句;如果不加,则将最后一条命令运行结果作为返回值。函数返回值在调用该函数后通过 $? 来获得。

 

17.  Shell函数参数

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值。

$1表示第一个参数,$2表示第二个参数...;

当n>=10时,需要使用${n}来获取参数;

还有几个特殊字符用来处理参数:

                   参数处理                                                     说明

                         $#                             传递到脚本的参数个数

                         $*        以一个单字符串显示所有向脚本传递的参数

                         $$                           脚本运行的当前进程ID号

                         $!                                   后台运行的最后一个进程的ID号

                        $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数。

                         $-                        显示Shell使用的当前选项,与set命令功能相同。

                         $?         显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

例:function_name  arg1 arg2……

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值