shell脚本的使用
Posted 瘦鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本的使用相关的知识,希望对你有一定的参考价值。
shell脚本,是一种编程语言,是用户使用Linux的工具。一个shell脚本也可以理解为一系列Linux命令的组合。可以用于各种自动化任务、复杂的任务。
Linux的Shell种类众多,常见的有Bash,Bash在日常工作中被广泛使用。同时,Bash也是大多数Linux系统默认的Shell。
shell基础教程见:shell教程
先看一个例子,这个例子是eblog中用于构建后端mariadb的初始化镜像。构建镜像很简单,使用docker build
即可,麻烦的是需要给镜像取一个有意义,区分度好的名称。例如,镜像名称需要包含:
- 项目名称
- 镜像类型
- 系统版本
- 代码分支
- 镜像生成时间
- 使用的代码commitID
这些信息大部分都是动态实时获取的,这就需要在构建镜像时自动获取。shell脚本能很好的处理这类事情。
#!/bin/bash
# 项目信息
version="v1.0"
function build_image()
echo "进入mariadb init制作镜像目录:"$(pwd)
latest_commit_id=$(git rev-parse --short HEAD)
branch=$(git symbolic-ref --short -q HEAD)
time=$(date "+%Y%m%d_%H%M%S")
tag=$version"_"$branch"_"$time"_"$latest_commit_id
docker_name=$1"_mariadb_init:"$tag
sudo docker build -t $docker_name .
各行代码解释如下:
- #! 指定使用哪种解释器执行脚本,例如这里使用/bin/bash
- 全局变量可以定义在文件开始,这里定义了系统的版本号
- 这里定义了一个函数
build_image
,用于构建镜像,其他脚本可以调用此函数 echo
用于打印信息- 使用
$()
执行并获取括号中命令的值,例如$(pwd)
执行了pwd
获取了当前路径,再将结果作为参数输出 - 获取代码分支和最后提交id,使用了git的命令,当然运行环境需要安装git
$
用于获取已经定义的变量,或者获取输入的变量,例如$1
获取第一个输入的变量,依次类推- 字符串的拼接直接将待拼接的字符串写到一起即可
- 最后调用```docker build``命令生成镜像
当然,其他各种Linux命令都可以写
函数build_image
在其他项目中如何调用?再看另外一个shell脚本:docker_build.sh
#!/bin/bash
# 项目信息
db_name="eblog_post"
# 引入脚本
source ../../shell/docker_build_init.sh
# 调用引入脚本中方法
build_image $db_name
这里定义了变量db_name
,再引入上面说到的打镜像脚本,再调用引入脚本中的方法,传入参数。
在Linux终端中执行./docker_build.sh命令,即可生成镜像
使用 SHC 加密 Shell 脚本
参考技术A 如何在Linux环境中加密shell脚本?shell脚本包含密码,不希望其他具有执行权限的人查看shell脚本并获取密码。可以安装使用shc工具,普通用户无法读取shc创建的加密Shell脚本。SHC是指:Shell脚本编译器(Shell Script Compiler)。环 境
Centos8
安装 shc
[root@localhost ~]# yum -y install shc
创建一个 shell 脚本
下面创建一个脚本文件:
使用 shc 加密该脚本文件
如下所示,使用shc加密welcome.sh脚本。
可以使用 file 命令查看文件的类型:
执行加密后的 shell 脚本
现在,让我们执行加密的Shell脚本,确保能够运行:
指定Shell脚本的过期时间
使用shc,您还可以指定到期日期。即在这个到期日期之后,当有人尝试执行Shell脚本时,将收到错误消息。使用 shc -e 选项创建一个新的加密Shell脚本,指定到期日期。到期日期以dd/mm/yyyy 格式指定。
在此示例中,如果有人尝试执行welcome.sh.x脚本文件,会提示已过期。
如果要指定自定义到期消息,需要加入 -m 选项。
本文介绍了如何使用shc加密shell脚本。希望对你有帮助~
以上是关于shell脚本的使用的主要内容,如果未能解决你的问题,请参考以下文章