Shell分类
Shell分类,在大部份的 UNIX 系统,三种著名且广被支持的 shell 是 Bourne shell(AT&T shell,在 Linux 下是 BASH)、C shell(Berkeley shell,在 Linux 下是 TCSH)和 Korn shell(Bourne shell 的超集)。
查看当前shell
查看当前shell,Shell 是一个程序,一般都是放在 /bin 或者 /usr/bin 目录下,当前 Linux 系统可用的 Shell 都记录在 /etc/shells 文件中。/etc/shells 是一个纯文本文件,你可以在图形界面下打开它,也可以使用 cat 命令查看它。
Shell修改命令提示符
Linux 中的 Shell 终端提示符是可以进行修改的,Shell 通过 PS1 和 PS2 这两个环境变量来控制提示符的格式,修改 PS1 和 PS2 的值就能修改命令提示符的格式。
Shell HelloWorld
所有编程语言的第一个程序一般都叫 HelloWorld,现在我们来实现第一个 Shell 程序,即 Shell HelloWorld,首先,我们使用 vim 新建一个 helloworld.sh 文件,命令如下:
命令结果赋值给Shell变量
我们可以将一个 Linux 命令的结果,赋值给一个 Shell 变量,在 Shell 中,我们需要将一个命令的输出结果赋值给一个 Shell 变量,有两种方式, 即使用反引号和使用 `$` 符号。
Shell $与$@区别
Shell 中的 $* 和 $@ 都表示传递给函数或脚本的所有参数,当 $* 和 $@ 不被双引号 `" "` 包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。
Shell数组
和其他编程语言一样,Shell 也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和 C++、 Java、C# 等类似,Shell 数组元素的下标也是从 0 开始计数。
Shell read命令
在 Shell 中,read 也是一个内置命令,用来从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认就是从键盘读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。
Shell declare和typeset命令
在 Shell 中,declare 和 typeset 都是 Shell 内建命令,它们的用法相同,都用来设置变量的属性。不过 typeset 已经被弃用了,建议使用 declare 代替。
Shell自增自减
在 Shell 中,整数也是支持自增和自减运算的,自增实现的功能就是将当前数值加一,自减实现的功能就是将当前数值减一。同时,自增和自减运算也可以分为前自增、后自增、前自减与后自减。
Shell let命令整数运算
在 Shell 中,let 命令和双小括号 (( )) 的用法是类似的,它们都是用来对整数进行运算,注意:和双小括号 (( )) 一样,let 命令也只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。
Shell expr命令
在 Shell 中,expr 命令是 evaluate expressions 的缩写,译为 “表达式求值”。Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等。
Shell使用bc
在 Shell 脚本中,我们可以借助管道或者输入重定向来使用 bc 计算器。管道是 Linux 进程间的一种通信机制,它可以将前一个命令(进程)的输出作为下一个命令(进程)的输入,两个命令之间使用竖线 `|` 分隔。
Shell elif条件判断
在 Shell 中,关键字 if 是用于测试某个条件语句是否满足一定的条件,如果满足特定的条件,则会执行 if 对应的 then 后缩进的代码块,否则就忽略该代码块继续执行后续的代码。
Shell case in
在 Shell 中,也支持两种分支结构(选择结构),分别是 if else 语句和 case in 语句。当分支较多,并且判断条件比较简单时,使用 case in 语句就比较方便了。
Shell while循环
Shell 的 while 循环跟 if 条件判断类似,都是在特定条件满足的情况下,执行相对应的代码,不过,while 循环是只要条件满足,会一直执行缩进里面的代码块,这点又类似于 for 循环。
Shell while循环嵌套
Shell 的 while 循环也可以实现嵌套的效果,即 while 循环里面嵌套一个或多个 while 循环。这种写法就类似于 Shell 的 for 循环的嵌套。
Shell until循环
Shell 的 until 循环跟 while 循环正好相反,while 循环是当条件成立时,一直执行循环里的逻辑,而 until 循环是当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环。
Shell until循环嵌套
Shell 的 until 循环也可以实现嵌套的效果,即 until 循环里面嵌套一个或多个 until 循环。这种写法就类似于 Shell 的 while 循环的嵌套。
Shell for循环
在 Shell 中,循环,我们除了可以使用 while 循环、until 循环还可以使用 for 循环。 Shell 中的 for 循环用于重复执行一段相同的或者类似的代码逻辑。
Shell for in循环嵌套
Shell 的 for in 循环也可以实现嵌套的效果,即 for in 循环里面嵌套一个或多个 for in 循环。这种写法就类似于 Shell 中的 for 循环的嵌套。
Shell continue语句
在我们使用 for 循环、while 循环或者 for in 循环时,在某种条件满足的情况下,需要跳过本次循环,继续执行下一次循环,在 Shell 中,跳过本次循环的继续运行下一次循环使用的关键字为 continue。
Shell break语句
在我们使用 for 循环、while 循环或者 for in 循环时,在某种条件满足的情况下,需要终止循环的继续执行,在 Shell 中,终止循环的继续运行使用的关键字为 break。
Shell test命令
test 是 Shell 内置命令,用来检测某个条件是否成立。test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test。test 命令有很多选项,可以进行数值、字符串和文件三个方面的检测。
Shell test数字大小比较
test 是 Shell 内置命令,用来检测某个条件是否成立。test 通常和 if 语句一起使用,可以用来比较两个数字的大小。注意,test 命令只能用来比较整数,不能比较小数。
Shell函数参数
在 Shell 中,我们定义函数时,不像 C 语言、C++、Python、Java 和 Golang 那样,需要传递参数,Shell 中的函数在定义时不能指明参数,但是在调用时却可以传递参数。
Shell函数返回值
在 C++、Java、Python 或者 Golang 等大部分编程语言中,返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果就通过 return 语句返回。