前言
无论是前端,后端还是移动端,大数据,AI还是运维,等等。作为一个高效的 Coder 都必须掌握 shell 编程。So,本文将告诉,入门 shell 其实很简单,抽点时间就能掌握的高回报率的小技能。
1. 基础知识
1.1 命令行
包行命令和参数的行称为命令行。语法格式如下:
command [arg1] [arg2] ... [argn] RETURN
其中 command
为命令的名称,arg1 ~ argn
为参数,RETURN
是终止命令行的按键。命令行语法中的方括号表明被括起来的参数为可选项。并不是所有命令都需要参数。选项是一种特殊类型的参数,其前面通常是一个或两个连字符(或称短线,负号:“-”)。多数实用程序的选项前面需要带一个连字符,而 GNU 程序的选项前面通常带有两个连字符。
1.2 shell
本质上,shell 只是执行命令的宏处理器(术语宏处理器是指扩展文本和符号以创建更大表达式的功能)。它既是命令解释器又是编程语言。作为命令解释器,shell 为丰富的 gnu 实用程序集提供用户接口;作为编程语言,允许组合这些实用程序,放在一个脚本文件中(通常后缀为 .sh 也可以不带后缀),构成新的命令,这些新命令具有与 /bin
等目录中的系统命令的具有相同可执行特性,允许用户或搭建立自定义环境以自动化其常见任务,来提高日常开发和运维效率。
shell 的实现有很多种,最常用的是 Bash (Bourne-Again Shell 的缩写),它是 GUN 操作系统的 shell 的解释器,也是本文使用的 shell。
2. test 内置命令
下文需要介绍的条件结构构循环结构,都需要用到 test 内置命令。正确掌握 test 的使用,是应用下文知识的前提。因此,放到前面先介绍。
2.1 格式
test 作为 shell 内置命令,它比较特殊,有两种等效写法:
2.1.1 test 命令方式
test -<opt> args
反逻辑:
test ! -<opt> args
2.1.2 中括号方式
比较推荐的使用方式,下文条件和循环结构都采用这种方式。
!!!注意: 中括号两边(与选项和参数之间)要有空格。
[ -<opt> args ]
反逻辑:
[ ! -<opt> args ]