Shell脚本介绍
1、Shell脚本,就是利用Shell的命令解释的功能对一个纯文本的文件进行解析然后执行这些功能也可以说Shell脚本就是一系列命令的集合。
2、Shell可以直接使用在win/Unix/Linux上面并且可以调用大量系统内部的功能来解释执行程序如果熟练掌握Shell脚本可以让我们操作计算机变得更加轻松也会节省很多时间。
3、Shell是一种脚本语言那么就必须有解释器来执行这些脚本常见的脚本解释器有
(1)、bash是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成是BourneAgain Shell的缩写内部命令一共有40个。
(2)、sh 由Steve Bourne开发是Bourne Shell的缩写sh 是Unix 标准默认的shell。
另外还有ash、 csh、 ksh等。
常见的编程语言分为两类一个是编译型语言如c/c/java等它们远行前全部一起要经过编译器的编译。另一个解释型语言执行时需要使用解释器一行一行地转换为代码如awk, perl, python与shell等。
4、使用场景能做什么
(1)、将一些复杂的命令简单化(平时我们提交一次github代码可能需要很多步骤但是可以用Shell简化成一步)
(2)、可以写一些脚本自动实现一个工程中自动更换最新的sdk(库)
(3)、自动打包、编译、发布等功能
(4)、清理磁盘中空文件夹
总之一切有规律的活脚本都可以尝试一下
编写一个简单的shell脚本
#!/bin/bash
# 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;
echo "Hello, world!”
将以上内容保存在一个.sh格式的文件中执行以下命令
bash test1.sh 或者 . test1.sh
最后输出 Hello, world!
创建一个shell脚本 通过shell脚本当前目录创建一个test文件夹复制test1.sh文件到test文件夹里进入文件夹test初始化一个npm并按照一个npm模块通过执行 bash test2.sh命令
#!/bin/bash
# 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;
echo "test2.sh start..."
mkdir test
cp -rf test1.sh test/
cd test
npm init
npm i --save lodash
echo "test2.sh end..."
写成一行使用不马上执行命令
echo "test2.sh start..."
mkdir test 如下
[ydbogon:~/Documents/www/workspa/test/shell]$ mkdir test2 通过$0$1$2可以接收命令行传递的参数$0 就是你写的shell脚本本身的名字$1 是你给你写的shell脚本传的第一个参数$2 是你给你写的shell脚本传的第二个参数
复制以下内容到test2.sh文件中
echo "shell脚本本身的名字: $0"
echo "传给shell的第一个参数: $1"
echo "传给shell的第二个参数: $2”
然后 执行命令bash test2.sh 1 2可以看到输出结果
shell脚本本身的名字: test2.sh
传给shell的第一个参数: 1
传给shell的第二个参数: 2
编写一个自动提交git的shell脚本
创建gitautopush.sh文件将以下内容复制进去
#!/bin/bash
# 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;
echo "gitautopush start..."
git add .
git commit -m $1
echo "git提交注释:$1"
git push origin master
echo "gitautopush end..."
以上自动提交git脚本就写好了现在输入以下命令执行脚本
bash gitautopush.sh 自动提交测试
控制台输出 代码已经成功提交到git服务器了
gitautopush start...
[master be8d56b] shell
3 files changed, 51 insertions()
create mode 100644 shelldemo/gitautopush.sh
create mode 100644 shelldemo/test1.sh
create mode 100644 shelldemo/test2.sh
git提交注释:自动提交测试
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 1.14 KiB | 1.14 MiB/s, done.
Total 6 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 1 local object.
To https://github.com/fozero/frontcode.git
2e79d26..be8d56b master -> master
gitautopush end...
参考