根据《linux兵书》目录 在kali上操作 第7章 Shell的使用


7.1  创建和执行Shell程序 148

要运行shell脚本程序,必须准备3类工具

1.文本编辑器(vi、vim、gedit)

2.脚本解释程序(bash、tcsh等)

3.其他工具(用来扩展shell脚本的功能,如grep、wc)

shell脚本是指使用用户环境shell提供的语句所编写的linux命令文件,可以利用文字编辑器进行程序录入和编辑加工来建立shell程序。和建立普通文本文件的方法相同

 

1.首先在bash环境下创建一个shell别名文件,命名为s1.sh。用文本编辑器编辑其文件内容如下:

alias dir=‘ls’

alias copy=‘cp’

alias命令用来设置指令的别名。可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。

alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化。

2.添加执行的权限。

chmod + s1.sh  //使用chmod +x 命令来授予sh执行的权限。

3.执行Shell程序。

source s1.sh

./ s1.sh

 

(在不同的环境中,执行Shell脚本的命令式不一样。Pdksh和bash环境下,使用.example命令。tcsh环境下,使用source example命令)

 


7.2  变量 149

Shell编程的变量,主要分为三种类型

1.环境变量

2.内部变量

3.用户变量

shell中使用“=”进行变量赋值,也可以用等号来改变或初值化一个变量的值


7.2.1  给变量赋值 150

 对变量进行赋值才能实现真正的价值。Shell编程语言中使用的变量为variant类型,可以变类型的变量。如果中间有空格则添加单引号。


7.2.2  访问变量 150

在Shell程序中要访问变量,可以通过变量名前“$”美元符号形式访问变量的值,然后用echo命令打印出来。

count=abc

echo $count

abc

7.3  位置参数 150

 
7.4  内部变量 151

$#:传送给Shell程序的位置参数的数目。

$?:最后命令的完成码或在Shell程序内所执行的Shell程序。

$0:Shell程序的名称。

$*:调用Shell程序时所传送的全部参数的单字符串。


7.5  特殊字符 152

Shell程序中对某些特殊字符规定了特殊的含义,在程序中使用特殊字符时不要将其作为变量名或字符串的一部分,这样会导致程序的出错。如果一定要在某些字符串中含有这类特殊字符,必须利用转义符(\)来实现,表明在此处该特殊字符不作为特殊字符来处理。

特殊字符表:

$  指出Shell变量名的开始。

|  把标准输出通过管道传送到下个命令。

#  标记注释开始。

&  在后台执行进程。

?  匹配一个字符

*  匹配一个或几个字符。

>  输出重定向操作符号。

<  输入重定向操作符号。

'     命令置换

>> 输出重定向操作符{重定向到文本文件}

<< 跟在输入结束字符串后(HERE)的操作符。

[]  列出字符范围。

[a-z]  指a~z的全部字符。

[a,z]  指a或者z字符。

.filename 执行(“源”)filename

空格  在两个字符之间的间隔符

 

双引号表示引用一个字符串,字符串中可以代空格键,比如对A进行赋值。

A=“asp fgh jk1”

若没有添加双引号,系统会认为“A=asp”,而不是A=“asp fgh jk1”


7.5.2  单引号 153

单引号用于执行引号中的系统命令,然后将命令的结果返回。这个返回的结果可以赋值给一个变量。


7.5.3  反斜杠 153

反斜杠用于对特殊字符进行转义,引号是一个特殊字符,如果对一个变量赋值3个引号,则命令执行时发生错误。需要用反斜线对输入的引号进行转义。


7.5.4  反引号 154

反引号用于执行引导中的系统命令,然后将命令的结果返回。这个返回的结果可以赋值给一个变量。


7.6  表达式的比较 154
执行两种操作符(数字或字符串)的逻辑比较稍有不同,这取决于处于那个Shell环境中,在pdkssh和bash中可以用test命令来完成表达式的比较。在tcsh中可以编写一个表达式来完成同样的比较。

7.6.1  pdksh和bash环境下的表达式比较 154

test命令语法:test expression(或者expression)pdksh和bash环境下test命令处理相同。

test命令支持的比较类型。

=:比较两个字符串是否相等。

!=:比较两个字符串是否不相等。

-n:判定字符串的长度是否大于零。

-z:判定字符串的长度是否等于零。

 


7.6.2  tcsh环境下的表达式比较 157.
7.7  循环语句 159
7.7.1  for语句 159

for语句是一种常用的循环语句,实现在一个值列表中的循环功能。使用方法:

for 变量名i n列表

do

命令1

命令2...

...

done

简单的for循环程序,作用是用循环的方法输出列表中的数值。

#!/bin/bash

#4.11.sh for

for char in a s d f g         #开始for循环

do                                 #循环体。

    echo $char

done                             #结束for循环。

在终端中输入下面的命令,运行这个程序。

./4.11.sh

程序运行结果如下所示。

a

s

d

f

g


7.7.2  while循环语句 160                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            


7.7.3  until语句 160

until循环用于执行一个循环体,直到条件为真时停止。

until 条件

do

命令1

...

done


7.7.4  repeat语句 161
7.7.5  select语句 161
7.7.6  shift语句 161
7.8  条件语句 162
7.8.1  if语句 162
7.8.2  case语句 163
7.9  跳转语句 165
7.9.1  break语句 165
7.9.2  exit 语句 166
7.10  函数 166
7.11  本章知识点综合应用 167
7.11.1  编写Shell脚本的一般流程 167
7.11.2  Shell编程实例 168
7.11.3  本章知识点整理 174
7.12  小结 174

posted @ 2016-04-02 18:05  鬼谷小生  阅读(377)  评论(0编辑  收藏  举报