Skip to content

Latest commit

 

History

History
116 lines (82 loc) · 3 KB

A00.md

File metadata and controls

116 lines (82 loc) · 3 KB

Shell脚本编程

第一个小程序

#!/bin/bash
# My first bash shell
string="Hello World"
echo $string

将文件保存为test.sh,更改文件权限chmod +x test.sh,执行./test.sh来运行脚本。

程序解释

开头

"#!"是一种约定标记,告诉系统该脚本使用什么解释器来执行,即使用哪一种Shell。使用指令cat /etc/shells查看系统支持的Shell种类,一般有以下几种:

  • Bourne Shell (/bin/sh) Unix系统默认的shell。
  • Bourne Again Shell (/bin/bash) bash是Linux标准默认的shell,本教程基于bash讲解。

变量

string="Hello World"

变量一般为英文字母组合,无需声明,直接定义即可。值得注意的是:

  • 变量名和等号之间不能有空格
  • 已定义的变量可以被重新定义
  • 使用变量时在变量前加美元符号$

在使用变量时,变量名外面花括号{}是可选的,即echo $stringecho ${string}都是合法的。建议使用花括号,这样可以帮助编译器识别变量的边界。

字符串

字符串是Shell编程里最常用的数据类型。字符串可以使用单引号,也可以使用双引号,两者的区别主要如下:

单引号

string='Hello World'

1)单引号里的任何字符串都会原样输出,里面若包含变量名,则变量无效
2)单引号字符串中不能出现单引号

双引号

my_name=subond
string="Hello World by ${my_name} ! \n"

双引号里可以有变量,可以使用转义字符。

使用符号#可以获取字符串长度,举例如下:

string="Hello World"
echo ${#string}

注释

以“#”开头的行就是注释,Shell编程里没有多行注释,只能每一行加一个#号。

总结

1.什么是Shell脚本

一个Shell脚本文件可以看做是包含许Shell指令的文本。Shell脚本一般包括:

  • Shell关键字;if...else,do...while,etc;
  • Shell命令;pwd,test,echo,etc;
  • Linux二进制指令,w,who,free,etc;
  • 文本处理工具,grep,awk,cut,etc;
  • 函数
  • 控制流

2.Shell命令

Bash Shell一般包含两种类型的命令:内建(内部)命令和外部命令。Bash shell允许输入以下类型的命令:别名、关键字、函数、内建指令和文件。

使用type命令可以查看命令是否为内建命令或者外部命令。例如:

type -a ls

使用which命令可以命令的路径或者位置。例如:

which ls

以下是bash的关键字和内建命令的列表:

3.调试脚本

我们可以使用-x选项来调试脚本,比如bash -x scriptName 或者在脚本文件里使用#!/bin/bash -x,效果是一样的。 也可以使用set内建命令来调试脚本。例如:

#!/bin/bash
#turn on debug mode
set -x
echo "Hello world"
#turn off debug mode
set +x
  • set -x:脚本执行时显示 命令及参数
  • set -v:显示脚本输入
  • set -n:读取命令但不执行命令