shell 构建基础脚本

构建基础脚本


使用多个命令

如果想让两个命令一起运行,可以将其放在同一行中,彼此用分号隔开

date ; who

创建shell脚本文件

在创建 shell 脚本文件时,必须在文件的第一行指定要使用的 shell,格式如下:

#!/bin/bash 

#后面的惊叹号会告诉 shell 用哪个 shell 来运行脚本

在指明了 shell 之后,可以在文件的各行输入命令,每行末尾加一个换行符。之前提到过, 注释可用#添加

显示消息

显示日期和登录的用户

#!/bin/bash
# This script displays the date and who's logged on

echo  The time and date are:
date
echo "Let's see who's logged into the system:"
who

使用变量

环境变量

#!/bin/bash
# display user information from the system

echo "User info for userid: $USER"
echo UID: $UID
echo HOME: $HOME

用户自定义变量

#!/bin/bash
# testing variables

days=10
guest="Katie"
echo "$guest checked in $days days ago"
days=5
guest="Jessica"
echo "$guest checked in $days days ago"

将一个变量赋值给另一个变量

#!/bin/bash
# assigning a variable value to another variable

value1=10
value2=$value1
echo The resulting value is $value2

命令替换

有两种方法可以将命令输出赋给变量。

  • 反引号`
  • $( )格式

执行命令替换符内的命令

#!/bin/bash
# Execute the command in the command substitution character

# testing=`date`
testing=$(date)
echo "The date and time are: " $testing

重定向输入和输出

输出重定向:bash shell 使用大于号(>)来实现该操作

#!/bin/bash
# command > outputfile

date > t.txt

输入重定向:输入重定向运算符是小于号(<)

#!/bin/bash
# command < inputfile

wc < t.txt

管道

bash shell 使用 | 来实现该操作

command1 | command2

可别以为由管道串联起的两个命令会依次执行。实际上,Linux 系统会同时运行这两个命令, 在系统内部将二者连接起来。当第一个命令产生输出时,它会被立即传给第二个命令。数据传输 不会用到任何中间文件或缓冲区。

执行数学运算

运算符描述
ARG1 |ARG2如果 ARG1 既不为 null 也不为 0,就返回 ARG1;否则,返回 ARG2
ARG1 & ARG2如果 ARG1 和 ARG2 都不为 null 或 0,就返回 ARG1;否则,返回 0
ARG1 < ARG2如果 ARG1 小于 ARG2,就返回 1;否则,返回 0
ARG1 <= ARG2如果 ARG1 小于或等于 ARG2,就返回 1;否则,返回 0
ARG1 = ARG2如果 ARG1 等于 ARG2,就返回 1;否则,返回 0
ARG1 != ARG2如果 ARG1 不等于 ARG2,就返回 1;否则,返回 0
ARG1 >= ARG2如果 ARG1 大于或等于 ARG2,就返回 1;否则,返回 0
ARG1 > ARG2如果 ARG1 大于 ARG2,就返回 1;否则,返回 0
ARG1 + ARG2返回 ARG1 和 ARG2 之和
ARG1 - ARG2返回 ARG1 和 ARG2 之差
ARG1 * ARG2返回 ARG1 和 ARG2 之积
ARG1 / ARG2返回 ARG1 和 ARG2 之商
ARG1 % ARG2返回 ARG1 和 ARG2 之余数
STRING : REGEXP如果 REGEXP 模式匹配 STRING,就返回该模式匹配的内容
match STRING REGEXP如果 REGEXP 模式匹配 STRING,就返回该模式匹配的内容
substr STRING POS LENGTH返回起始位置为 POS(从 1 开始计数)、长度为 LENGTH 的子串
index STRING CHARS返回 CHARS 在字符串 STRING 中所处的位置;否则,返回 0
length STRING返回字符串 STRING 的长度
+ TOKEN将 TOKEN 解释成字符串,即使 TOKEN 属于关键字
(EXPRESSION)返回 EXPRESSION 的值

expr命令

#!/bin/bash
# An example of using the expr command

var1=10
var2=20
var3=$(expr $var2 / $var1)
echo The result is $var3

使用方括号

#!/bin/bash
# Using square brackets to perform mathematical operations is much more convenient than using the expr command

var1=100
var2=50
var3=45
var4=$[$var1 * ($var2 - $var3)]
echo The final result is $var4

浮点数解决方案

#!/bin/bash
# Use BC to handle floating point numbers in the script

var1=20
var2=3.14159
var3=$(echo "scale=4; $var1 * $var1" | bc)
var4=$(echo "scale=4; $var3 * $var2" | bc)
echo The final result is $var4

bc输入重定向处理更多字符

#!/bin/bash
# BC input redirection handles more characters

var1=10.46
var2=43.67
var3=33.2
var4=71

var5=$(bc << EOF
scale = 4
a1 = ( $var1 * $var2)
b1 = ($var3 * $var4)
a1 + b1
EOF
)

退出脚本

状态码描述
0命令成功结束
1一般性未知错误
2不适合的 shell 命令
126命令无法执行
127没找到命令
128无效的退出参数
128+x与 Linux 信号 x 相关的严重错误
130通过 Ctrl+C 终止的命令
255正常范围之外的退出状态码
#!/bin/bash
# testing the exit status

var1=10
var2=30
var3=$[ $var1 * var2 ]
echo The value is $var3
exit $var3

实战

计算两个日期之间的天数

#!/bin/bash
# calculate the number of days between two dates

date1="Jan 1, 2020"
date2="May 1, 2020"

time1=$(date -v "$date1" +%s)
time2=$(date -v "$date2" +%s)

diff=$(expr $time2 - $time1)
secondsinday=$(expr 24 \* 60 \* 60)
days=$(expr $diff / $secondsinday)

echo "The difference between $date2 and $date1 is $days days"

小结

bash shell 脚本允许将多个字符串命令依次放入脚本。创建脚本的最基本方式是将命令行中 的多个命令以分号隔开。shell 会按顺序逐个执行命令,在屏幕上显示每个命令的输出。

你也可以创建一个 shell 脚本文件,将多个命令放进去,让 shell 依次执行。shell 脚本文件必 须定义用于运行该脚本的 shell。这可以通过#!符号在脚本文件的第一行指定,随后跟上 shell 的 完整路径。

在 shell 脚本内,你既可以在变量名前使用美元符号来引用环境变量,也可以定义自己的变 量并对其赋值,甚至还可以通过反引号或$()获取命令的输出。

bash shell 允许重定向命令的标准输入和标准输出。你可以使用大于号以及文件名将命令输 出从屏幕重定向到该文件中。你也可以使用双大于号将输出数据追加到已有文件。小于号则用来 重定向命令输入,比如将命令输入重定向到文件。

Linux 管道命令(断条符号)允许将命令的输出直接传给另一个命令。Linux 系统会同时运 行这两个命令,将第一个命令的输出作为第二个命令的输入,不借助任何中间文件。

bash shell 提供了两种方式以在 shell 脚本中执行数学运算。expr 命令是一种执行整数运算的 简便方法。在 bash shell 中,也可以通过将美元符号放在由方括号包围的表达式之前来执行基础 数学运算。对于浮点数运算,要用到 bc 命令,将内联数据重定向到输入,然后将输出保存到用 户自定义变量中。

最后,本章讨论了如何在 shell 脚本中使用退出状态码。shell 中运行的每个命令都会产生一 个退出状态码,这是 0~255 的一个整数值,表明命令是否成功执行,如果没有成功,可能的原 因是什么。退出状态码 0 表明命令成功执行。你可以在 shell 脚本中用 exit 命令来指定脚本完 成时的退出状态码。

到目前为止,shell 脚本中的命令都是按照有序的方式一个接着一个执行。第 12 章将介绍如 何用一些逻辑流程控制来更改命令的执行次序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Jenkins shell构建脚本是一种在Jenkins中通过脚本来实现持续集成和自动化构建的方式。通过使用shell命令,可以实现代码检出、编译、测试、打包、部署等一系列构建工作的自动化执行。这种方式不仅能够提高构建效率,减少人为操作失误的可能性,还可以灵活地根据不同的环境和需要来配置执行流程。 ### 回答2: Jenkins是一款非常强大的开源自动化服务器,可以实现持续集成和持续交付,运用Jenkins可以方便地使用shell构建脚本。本文将从什么是shell构建脚本、如何创建shell脚本shell脚本的一些常用命令等方面介绍Jenkins的shell构建脚本。 什么是shell构建脚本shell脚本是一种命令语言,它允许将一系列命令组合成一个脚本,一次性运行。在Jenkins中,我们可以利用shell脚本来实现许多自动化操作,如Java编译、Jar打包、部署等。 如何创建shell脚本? 在Jenkins中创建一个shell脚本非常简单。首先,打开你的项目的Jenkins页面,进入“构建后操作”,选择“执行shell脚本”选项。在弹出的窗口中,你可以编写你的shell脚本。 下面是一个简单的shell脚本示例: ``` #!/bin/bash //设置脚本解释器 echo "Hello World" //打印 “Hello World”到控制台 ``` 在这个示例中,我们以“#! /bin/bash”开头来指定我们要使用bash作为解释器。echo命令用于向控制台输出“Hello World”文本。 shell脚本的一些常用命令 以下是一些常用的shell脚本命令: - cd:切换目录 - cp:复制文件或目录 - mv:移动文件或目录 - mkdir:创建目录 - rm:删除文件或目录 - wget:下载文件 - chmod:设置文件权限 - tar:压缩和解压文件 以上命令只是shell脚本中的一部分,还有其他强大的命令可以帮助你完成许多任务,例如sed、awk和grep等。 在Jenkins中使用shell构建脚本,可以让我们更快地识别问题并找出解决方案。通过编写一个shell脚本,我们可以尝试不同的方案,并快速找到最适合我们的方案。 ### 回答3: Jenkins是一个流行的开源持续集成工具,可以帮助团队构建,测试和部署他们的软件应用程序。Jenkins具有丰富的插件库,使得用户可以很容易地对其进行扩展和定制化。其中,Jenkins shell构建脚本是一种非常有用的构建方式之一。 Jenkins shell构建脚本是一种运行在Jenkins构建环境中的脚本,它可以执行各种任务,如编译代码,运行测试,构建和部署应用程序等。这些脚本通常使用shell或基于操作系统的命令来实现所有这些任务。Jenkins构建脚本可以使用多种编程语言编写,但是shell脚本是最常用的一种。在Jenkins任务配置中,我们可以指定一个或多个shell脚本,并且可以按照需要传递参数和环境变量。 Jenkins shell构建脚本的一个重要优点是它的灵活性。用户可以使用各种shell命令和工具来完成任务。例如,编译代码可以使用编译器或构建工具,如Ant,Maven或Gradle。还可以使用各种测试框架和工具,如JUnit,TestNG和Selenium。在构建代码时,用户可以选择将最终的输出文件复制到指定的目录,或者将代码部署到Web服务器或应用程序服务器中。 在编写Jenkins shell构建脚本时,建议遵循一些最佳实践。首先,脚本必须是可重复和可维护的。这意味着它应该根据需要使用函数和变量进行模块化编写。其次,脚本必须是幂等性的,即每次运行时都会产生相同的结果。最后,要确保脚本能够检测和处理错误,并在出现问题时快速停止构建。 总之,Jenkins shell构建脚本是一种功能强大且灵活性较高的构建方式。它可以帮助用户实现不同的构建任务,同时保持代码的可重复性和可维护性。最重要的是,使用Jenkins shell构建脚本可以使构建整个应用程序的流程更加自动化和高效,从而节省大量的时间和精力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值