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.
二 基本格式
使用 vi 编辑器新建一个文件 hello.sh。 扩展名并不影响脚本执行,见名知意。 比如用 php 写 shell 脚本,扩展名就用 .php。
例如 #!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 用于向窗口输出文本.
1 | ! /bin/bash |
执行:
chmod +x ./hello.sh #使脚本具有执行权限
./hello.sh #执行脚本
直接写 hello.sh, linux系统会去PATH里寻找有没有叫 hello.sh的。 用 ./hello.sh 告诉系统说,就在当前目录找。
还可以作为解释器参数运行。 直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/sh /root/hello.sh
/bin/php test.php
这种方式运行脚本,不需要在第一行指定解释器信息,写了也不生效
三shell变量
注意:
除了等号不空格,其他处处都空格
变量=值 you=”buca”
注意:
变量名和等号之间不能有空格,同时,变量名的命名须遵循如下规则:
l 首个字符必须为字母( a-z, A-Z)
l 中间不能有空格,可以使用下划线
l 不能使用标点符号
l 不能使用 bash里的关键字(可用 help 命令查看保留关键字
1 | name="nicai" |
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
使用 unset 命令可以删除变量。 不能删除只读变量。
1 | readonly variable name |
变量类型:
局部变量:
局部变量在脚本或命令中定义,仅在当前 shell 实例中有效,其
他 shell 启动的程序不能访问局部变量。
环境变量:
所有的程序,包括 shell 启动的程序,都能访问环境变量,有些程
序需要环境变量来保证其正常运行。 可以用过 set 命令查看当前环境变量。
shell变量:
shell 变量是由 shell 程序设置的特殊变量。 shell 变量中有一
部分是环境变量,有一部分是局部变量,这些变量保证了 shell 的正常运行
参数传递:
在执行 Shell 脚本时, 可以向脚本传递参数。
脚本内获取参数的格式为:
1 | n |
n 代表一个数字, 1 为执行脚本的第一个参
数, 2 为执行脚本的第二个参数,以此类推……
$0 表示当前脚本名称。
特殊字符:
$# | 传递到脚本的参数个数 |
---|---|
$* | 以一个单字符串显示所有向脚本传递的参数。 |
$$ | 脚本运行的当前进程 ID 号 |
$! | 后台运行的最后一个进程的 ID 号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$? | 显示最后命令的退出状态。 0 表示没有错误,其他任何值表明有错误。 |
例子:
1 | !/bin/bash |
1 | $*和$@区别 |
四 shell运算符
Shell 和其他编程语音一样,支持包括:算术、关系、 布尔、字符串等运
算符。 原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现,例如
expr。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如加,减,乘,除等操作
注意:表达式和运算符之间要有,例如 2+2 是不对的,必须写成 2 + 2。完整的表达式要被 包含,注意不是单引号,在 Esc 键下边。
1 | !/bin/bash |
1 | 此外,还可以通过(())、 $[]进行算术运算。 |
五 流程控制
1 if else
格式
1 | if condition1 |
条件表达式:
1 | EQ 就是 EQUAL等于 |
例子:
1 | !/bin/bash |
2for循环
方式一
1 | for N in 1 2 3 |
方式二
1 | for ((i = 0; i <= 5; i++)) |
例子:
1 | ! /bin/bash |
3 while语法
方式一
1 | while expression |
方式二
1 | !/bin/bash |
let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量
计算中不需要加上 $ 来表示变量。 自加操作: let
no++ 自减操作: let no–
无限循环:
1 | while true |
3 case语句
1 | case 值 in |
例子:
read aNum 等待键盘输入
1 | !/bin/bash |
六函数的使用
1 | #! /bin/bash |