初识 shell
脚本其实就是短小的、用来让计算机自动化完成一系列工作的程序,这类程序可以用文本编辑器修改,不需要编译,通常是解释运行的。
第一个 shell 脚本
打开文本编辑器 (可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh 代表 shell)。
1 | !/bin/bash |
1、
chmod +x file
加上执行权限,否则会提示无执行权限。2、注意执行脚本时候或者全目录,或者
./file.sh
,如果不加的话,linux 默认会从PATH 里去找该 file.sh。3、脚本后缀名可以任意修改,仍然可以正常运行。
运行 shell 脚本
运行 Shell 脚本有两种方法:
1、作为可执行程序
1 | chmod +x ./test.sh #使脚本具有执行权限 |
2、作为解释器参数
1 | /bin/sh test.sh |
sh/bash/csh/Tcsh/ksh/pdksh 等 shell 的区别
- sh (全称 Bourne Shell): 是 UNIX 最初使用的 shell,而且在每种 UNIX 上都可以使用。Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。
- bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。 与 Bourne Shell 完全兼容,并且在 Bourne Shell 的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。
- csh (全称 C Shell): 是一种比 Bourne Shell 更适合的变种 Shell,它的语法与 C 语言很相似。
- Tcsh: 是 Linux 提供的 C Shell 的一个扩展版本。Tcsh 包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似 C 语言的语法,他不仅和 Bash Shell 提示符兼容,而且还提供比 Bash Shell 更多的提示符参数。
- ksh (全称 Korn Shell): 集合了 C Shell 和 Bourne Shell 的优点并且和 Bourne Shell 完全兼容。
- pdksh: 是 Linux 系统提供的 ksh 的扩展。pdksh 支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。
Shell 变量
定义变量
1 | your_name="runoob.com" |
注意,变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用 bash 里的关键字(可用 help 命令查看保留关键字)。
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
1 | your_name="qinjx" |
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。推荐给所有变量加上花括号,这是个好的编程习惯。
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
1 | !/bin/bash |
上面的程序执行会报错
/bin/sh: NAME: This variable is read only.
。
删除变量
使用 unset 命令可以删除变量。语法:
1 | unset variable_name |
变量被删除后不能再次使用。unset 命令不能删除只读变量。
Shell 字符串
字符串是 shell 编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。