什么是Shell编程及其在Linux中的使用
脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。Shell所需要的环境Shell 编程python 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了,Linux 的 Shell 种类众多这里不做过多介绍注:(在一般
一,Shell介绍
什么是Shell?Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。 Shell 既是一种命令语言,又是一种程序设计语言。
Shell所需要的环境Shell 编程python 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了,Linux 的 Shell 种类众多这里不做过多介绍注:(在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。 #! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序)
现在我们可以尝试编辑第一个Shell脚本,打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell)

其中#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。 而echo 命令用于向窗口输出文本。
我们也可以将上面的代码作为文件保存,作为可执行程序 将上面的代码保存为 test.sh,并 cd 到相应目录:
代码如下

二,基础语法
首先在Shell中变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。 这意味着,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。例如在C语言或者 C++ 中,变量分为整数、小数、字符串、布尔等多种类型。当然,如果有必要,你也可以使用 Shell declare 关键字显式定义变量的类型,但在一般情况下没有这个需求
定义变量Shell支持以下三种定义变量的方法:
variable=value
variable='value'
variable="value"
注意,赋值号=的周围不能有空格!!!
而命名规范和大部分编程语言一样:变量名由数字、字母、下划线组成; 必须以字母或者下划线开头; 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。
示例代码:

1.使用变量
而我们使用变量,只需要在一个定义过的变量,在变量名前面加美元符号$即可,变量名外面的花括号{ }是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

如果不给ypp 变量加花括号,写成echo "I am good at yppthis gun",解释器就会把 $yppthis当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。所以推荐给所有变量加上花括号。
2.修改变量
已定义的变量,可以被重新赋值,如:

第二次对变量赋值时不能在变量名前加$,只有在使用变量时才能加$。
而单引号和双引号的区别,我们用下面的代码来解释

以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。
而以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。
我们也可以将命令的结果赋值给变量,
其中常见的有两种方法:
variable=`Shell`
variable=$(Shell)
第一种方式把命令用反引号` `(位于 Esc 键的下方)包围起来,反引号和单引号非常相似,容易产生混淆,所以不推荐使用这种方式;第二种方式把命令用$()包围起来,区分更加明显,所以推荐使用这种方式
而只读变量使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变,若强行使用只读变量就会报错
3.删除变量
我们可以使用unset命令删除变量,注意:变量被删除后不能再次使用;且unset 命令不能删除只读变量。
4.传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
如下列例子: 以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径):


其中我们给出特殊字符处理参数说明:

$* 与 $@ 区别: 相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
更多推荐

所有评论(0)