shell脚本和编程 |
您所在的位置:网站首页 › linux调用接口单引号不识别怎么办 › shell脚本和编程 |
shell脚本和编程|青训营笔记
shell课前准备
一、学习shell的价值:
Linux服务器的基本操作和管理
前端Node.js服务的进程管理、问题排查、资源监控等运维操作
使用shell编写TCE、SCM、Docker脚本,完成服务编译和部署
二、shell课前准备:
一台安装了Linux系统的物理机或者云主机,可运行shell脚本
本地的vscode安装Bash Debug插件,并升级bash到4.x 以上
Npm全局安装zx依赖
三、shell基础概念:
1、命名规则:由字母数字下划线组成,但首字母不能是数字,不能使用bash中的关键字,赋值号的周围不能有空格。
#!/bin/bash 这是脚本文件的shebang,它告诉系统脚本文件使用哪种解释器来执行。在这个例子中,使用的是bash解释器#变量名=变量值(等号左右不能有空格),定义了两个变量page_size和page_num,并分别给它们赋值为1和2 page size=1 page_num=2 #将命令复制给变量,这样可以通过变量名来执行命令。 _ls=ls #将命令结果赋值给变量,可以通过变量名来访问命令结果 file_list=$(ls -a) #默认字符串,不会进行 + 运算。所以total的值为"page_size*page_num"字符串 total=page_size*page_num #声明变量为整型(-i),后续的数值计算中,total会被当作整型来处理 let total=page_size*page_num declare -i total=page_size*page_num #导出环境变量,使得其在子进程中也可用 export total declare -x total
不需要登录的bash 我们称为 non-login bash, 比如在原来的 bash 中执行 bash开启子进程、 执行一些外部命令 如果修改了配置文件,不会立即生效,要通过source ~/.bashrc执行此文本使其生效 无论是否是交互式,是否是登录式,Bash Shell 在启动时总要配置其运行环境,例如初始化环境变量、设置命令提示符、指定系统命令路径等。这个过程是通过加载一系列配置文件完成的,这些配置文件其实就是 Shell 脚本文件。 运算符和引用双引号:部分引用,使用这种引用时,$、`(反引号)、(转义符) 这 3 个还是会解析成特殊的意义 单引号:完全引用,只原样输出 反引号:执行命令 cmd & 实现让命令在后台运行 使用方法一的时候,当我们关闭终端,命令就会停止运行。加上nohup可以在关闭终端后不停止命令 注意:1、条件表达式要放在方括号之间,并且要有空格,例如: [a = = a==a==b] 是错误的,必须写成 [ a==a == a==b ]。 2、乘号(*)前边必须加反斜杠()才能实现乘法运算; 3、if…then…fi 是条件语句,后续将会讲解。 4、在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 “*” 不需要转义符号"" 。 shell管道:定义:将一个命令的输出作为另一个命令的输入****** 语法:cmd1 | cmd2****** 要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理****** 注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出 重定向每个 shell 命令在执行时都会打开三个文件描述符, 文件描述符0、1、2, 分别对应 stdin、stdout、stderr, 这三个文件描述符默认默认指向 终端输入、终端输出,那么当命令需要获取输入的时候,它会去读取 fd0, 当要输出的时候它会像 fd1、fd2写入, 改变这些描述符指向的行为叫做重定向 :将命令的输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则覆盖。 :将命令的输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则在文件末尾追加。 2>:将命令的错误输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则覆盖。 &>:将命令的输出和错误输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则覆盖。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |