来源丨匠心Java(code-the-world)
大家好,我是老C,很开心和大家见面
~
在公司项目的开发过程中,总会有需要编写shell脚本去处理一个业务的时候,也有的小伙伴总会问我关于shell脚本的一些知识,在这里博主整理了一篇文章
shell脚本?
在说什么是shell脚本之前,先说说什么是shell。
shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。
shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。
shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序。
shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。
shell脚本中最重要的就是对shell命令的使用与组合,再使用shell脚本支持的一些语言特性,完成想要的功能。
语法-调试技巧-实战案例,本篇都有,开整~
注释
-
-
多行注释::<<eof ...="" eof="" 或者="" :<<!="" !="" (:<<="" 标识多行注释开始,并指定一个标识符作为开始结束的标志)<="" li="" style="box-sizing: border-box;">
变量
-
局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
-
环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
-
shell变量:shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
-
创建普通变量:name="test" (=两边不可有空格)
-
创建只可函数体中使用的局部变量:local name="test" (使用local修饰的变量在函数体外无法访问,并且local只能在函数体内使用)
-
使用变量:echo $name 或者 echo ${name} (推荐使用大括号版)
-
变量重新赋值:name="new_test" (将原值覆盖)
-
只读变量:name="only_read" -> readonly name (使用readonly标识后的变量,不可被修改)
-
删除变量:unset name; (删除之后不可访问,删除不掉只读变量)
-
单引号变量
var='test'
,只能原样输出,变量无效
-
-
双引号变量
var="my name is ${name}"
,变量有效
-
-
-
name="this is"" my name"; name="this is my name"; name="this" is "my name" 等效
-
name='this is'' my nam'; name='this is my name'; name='this' is 'my name' 等效
-
-
-
-
echo ${name:1:4} #输出 is i
-
-
定义数组:array_name=(li wang xiang zhang) (小括号做边界、使用空格分离)
-
单独定义数组的元素:arraypara[0]="w"; arraypara[3]="s" (定义时下标不连续也可以)
-
赋值数组元素:array_name[0]="zhao";
-
-
-
-
echo ${arrayname[0]} # 输出"li"
-
echo ${arrayname[1]} # 输出" "
-
echo ${arrayname[3]} # 输出"zhang"
-