shell脚本和编程| 青训营笔记

74 阅读3分钟
学习shell的价值:

1.Linux服务器的基本操作和管理

2.前端Node.js服务的进程管理、问题排查、资源监控等运维操作

3.使用shell编写TCE、SCM、Docker脚本,完成服务编译和部署

 

shell构成

shell首先是解释器,解释器可以执行脚本命令,也提供了很多核心的工具,最后是第三方库,包括node、朋友Thom等封装的一些模块。其次是一门编程语言。

 

shell变量

自定义变量

环境变量

系统环境变量

 

管道

管道与管道符 | ,作用是将前一个命令的结果传递给后面的命令

语法:cmd1 | cmd2

要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理

注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set-o pipefail设置shel遇到管道错误退出

 

 

判断命令

shell中提供了test、[、[[三种判断符号,可用于:

整数测试

字符串测试

文件测试

语法:

test condition

[condition]

[condition]

 

注意:

  • 中括号前后要有空格符

  • [和test是命令,只能使用自己支持的标志位,<、>、=只能用来比较字符串

  • 中括号内的变量,最好都是用引号括起来

  • [[更丰富,在整形比较中支持<、>、=,在字符串比较中支持=~正则

分支语句
语法1:

if condition ;then

程序段

elif condition; then

程序段

esle

程序段

fi  

语法2:

case $变量in:

“第一个变量内容")

程序段

;;

"第一个变量内容")

程序段

;;

*)

程序段

;;

esac

 

循环

while循环

while condition ; do程序段;done

until循环

until condition ; do程序段;done

for循环

for var in[words…];do程序段;done

 

函数

语法一:

funcName(){echo "abc";}

 

语法二:

function funcName(){echo "abc";}

 

注意:

  • shell自上而下执行,函数必须在使用前定义

  • 函数获取变量和shell script类似,0代表函数名,后续参数通过0代表函数名,后续参数通过1、$2...获取

  • 函数内return仅仅表示函数执行状态,不代表函数执行结果

  • 返回结果一般使用echo、printf,在外面使用$()、“获取结果

  • 如果没有return,函数状念是上一条命令的执行状态,存储在$7中

 

 

调试和前端集成
调试

1.普通log,使用echo、printf

2.使用set命令

3.vscode debug插件

 

 

VSCode配置

1.shellman:代码提示和自动补全

2.shellcheck:代码语法校验

3.shell-format:代码格式化

4.Bash Debug:支持单步调试

-安装vscode插件

-编写launch.json文件

-升级bash到4.x以上版本

 

前端集成

1.node中通过exec、spawn调用shell命令

2.shell脚本中调用node命令

3.借助zx等库进行javascript、shell script的融合

借助shell完成系统操作,文件io、内存、磁盘系统状态查

借助nodejs完成应用层能力,网络io、计算等

 

例. 创建一个简单的列目录和日期的shell 脚本并运行之。

【操作步骤】

⑴输入下列命令,创建一个新文件:cat > new_script

⑵输入下列行:

echo “Your files are:”

ls

echo “today is”

date

按回车键将光标移到一个新行,按Ctrl+D键保存并退出。

⑶检查文件内容,确保它是正确的:

cat new_script

⑷运行脚本,输入它的文件名:

new_script

该脚本不运行。

⑸输入下列命令,显示文件的权限:

ls –l new _script

权限表明该文件不是可执行。要通过简单调用文件名来运行脚本,必须有权限。

⑹输入下列命令,使new_script变成可执行文件。

chmod +x new_script

⑺要查看新的权限,输入:

ls –l

现在拥有文件的读、写和执行权限。

⑻输入新脚本的名字以执行它:

new_script

所有输入到文件的命令都执行,并输出到屏幕上。

⑼如果接收到错误信息,比如:

command not found

输入下列命令:

./new_script

该命令行通知shell到哪里寻找shell脚本new_script,即您的当前目录“.”。

1.png

 

 

个人总结

这节课让我学会了如何运用shell的变量、特殊字符、输入输出命令等进行shell脚本的建立与执行,并且掌握了运用常用的shell程序控制结构语句进行 shell程序设计与执行。让我能对shell有更进一步的了解。