Linux之shell编程

Posted 熊老二-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux之shell编程相关的知识,希望对你有一定的参考价值。

简介
shell脚本执行方式Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。它类似于 DOS 下的 command 和后来的 cmd.exe。Shell 既是一种命令语言,又是一种程序设计语言。
Shell script 是一种为 shell 编写的脚本程序。Shell 编程一般指 shell脚本编程,不是指开发 shell 自身。
Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,一个系统可以存在多个 shell,可以通过 cat /etc/shells 命令查看系统中安装的 shell。
Bash 由于易用和免费,在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。

快速入门
以下所有操作都在/export/shell目录下进行,请提前创建该目录:

mkdir -p /export/shell

新建 /export/shell/hello.sh 文件

#!/bin/bash 
echo 'hello world'

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。注意,在shell脚本中除了第一行的#表示特殊格式外,其他地方的#一般表示注释。
echo命令用于向窗口输出文本。
解释器
Java需要虚拟机解释器, 同理 shell脚本也需要解析器,查看Linux系统支持的解释器:

[root@node1 shell]#cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

常见Shell解释器:
sh: 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。
Bash:从名称可以看出是Bsh的升级版本,是著名的开源软件项目,目前大多数的Linux版本都使用Bash 作为默认的Shell程序,当运行Shell程序时,实际运行的是Bash程序
Csh:是因使用C语言的语法风格而得名,在用户的命令行交互界面上进行了很多改进,并增加了历史,别名,文件名替换,作业掏等功能,相比Bsh,Csh在更加适用为  用户提供命令交互操作
在现代的 Linux上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。
如果你希望查看当前 Linux 的默认 Shell,那么可以输出 SHELL 环境变量:

[root@node1 shell]# echo $SHELL 
/bin/bash

输出结果表明默认的 Shell 是 bash。

shell脚本执行方式
shell脚本有三种执行方式:
方式一:sh执行脚本
sh执行,进入脚本的工作目录,然后使用对应的sh或bash来执行脚本,这种执行方式,脚本文件不需要具有可执行权限。

[root@node1 ~]# cd /export/data/shell/ 
[root@node1 shell]#sh hello.sh 
hello world

方式二:工作目录执行
执行脚本时,先进入到脚本所在的目录,然后使用 ./脚本方式执行,这种执行方式,必须保证脚本文件具有可执行权限。

[root@node1 ~]#cd /export/data/shell/
[root@node1 shell]# chmod +x hello.sh 
[root@node1 shell]# ./hello.sh 
hello world

方式三:绝对路径执行
绝对路径中执行,指的是直接从根目录/到脚本目录的绝对路径,这种执行方式,必须保证脚本文件具有可执行权限。

[root@node1 ~]# /export/shell/hello.sh 
hello world

shell的数据类型
字符串:
字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。建议使用双引号,因为双引号里可以有变量和特殊字符,可以按照变量和特殊字符去使用。
声明字符串类型的变量:

整数型:
在Shell中所有的变量默认都是字符串型。默认情况下,所有的数值都是不能进行运算的,如果想要进行数学运算,可以使用“ ( ( 运 算 式 ) ) ” 或 “ ((运算式))”或“ (())[运算式]”方式运算(后续讲)。

以上是关于Linux之shell编程的主要内容,如果未能解决你的问题,请参考以下文章

Linux之Shell编程(13)--Shell文件包含

Linux之Shell编程(13)--Shell文件包含

linux——shell编程之函数和循环控制

Linux bash基础特性二

linux之shell编程基本语法

Linux之shell脚本编程