Linux shell 脚本
配置jenkins打包环境时,用到了linux的shell脚本,了解一下其基本的语法。
本文学习自:
https://www.runoob.com/linux/linux-shell.html
一、打印 echo
#!/bin/bash
echo "Hello World !"
- 1
- 2
二、字符串
- 定义字符串
- 只读变量readonly
- 删除字符串变量
- 使用字符串变量
- 字符串拼接
- 字符串长度
- 提取子字符串
- 查找子字符串
1、定义字符串
your_name="runoob.com"
- 1
2、只读变量
#!/bin/bash
myUrl="http://www.google.com"
readonly myUrl
# myUrl 为只读变量 这里赋值是错误的
myUrl="http://www.runoob.com"
- 1
- 2
- 3
- 4
- 5
3、删除字符串变量
unset variable_name
- 1
4、使用字符串变量
your_name="qinjx"
echo $your_name
echo ${your_name}
# 养成使用 ${your_name} 括号的良好习惯
- 1
- 2
- 3
- 4
- 5
5、字符串拼接
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 输出结果
hello, runoob ! hello, runoob !
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
6、字符串长度
string="abcd"
echo ${#string}
#输出 4
- 1
- 2
- 3
- 4
7、提取子字符串
string="runoob is a great site"
echo ${string:1:4}
# 输出 unoo
- 1
- 2
- 3
- 4
8、查找子字符串
# 查找字符 i 或 o 的位置(哪个字母先出现就计算哪个)
string="runoob is a great site"
echo `expr index "$string" io`
# 输出 4
- 1
- 2
- 3
- 4
- 5
注意: 以上脚本中 ` 是反引号,而不是单引号 '
三、数组
- 定义数组
- 读取数组
- 获取数组的长度
1、定义数组
# 定义数组
array_name=(value0 value1 value2 value3)
# 定义数组
array_name=(
value0
value1
value2
value3
)
# 定义数组
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
2、读取数组
# 读取数组
valuen=${array_name[0]}
# 读取数组的所有元素
echo ${array_name[@]}
- 1
- 2
- 3
- 4
3、获取数组的长度
# 取得数组单个元素的长度
lengthn=${#array_name[0]}
# 取得数组元素的个数
length=${#array_name[@]}
# 取得数组元素的个数
length=${#array_name[*]}
- 1
- 2
- 3
- 4
- 5
- 6
四、运算符
- 加减乘除
- 相等-eq 不相等-ne
- 大于-gt 小于-lt 大于等于-ge 小于等于-le
- 与或非
加减乘除
a=10
b=20
val=</span><span class="token function">expr</span> $a + $b<span class="token variable">
echo “a + b : $val”
val=</span><span class="token function">expr</span> $a - $b<span class="token variable">
echo “a - b : $val”
val=</span><span class="token function">expr</span> $a \* $b<span class="token variable">
echo “a * b : $val”
val=</span><span class="token function">expr</span> $b / $a<span class="token variable">
echo “b / a : $val”
val=</span><span class="token function">expr</span> $b % $a<span class="token variable">
echo “b % a : $val”
if [
a
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
o
p
e
r
a
t
o
r
"
>
=
=
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> <span class="token operator">==</span> <span class="token variable">
a</span><spanclass="tokenoperator">==</span><spanclass="tokenvariable">b ]
then
echo “a 等于 b”
fi
if [
a
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
o
p
e
r
a
t
o
r
"
>
!
=
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> <span class="token operator">!=</span> <span class="token variable">
a</span><spanclass="tokenoperator">!=</span><spanclass="tokenvariable">b ]
then
echo “a 不等于 b”
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
相等-eq 不相等-ne
a=10
b=20
# -eq 是否相等
if [
a
<
/
s
p
a
n
>
−
e
q
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -eq <span class="token variable">
a</span>−eq<spanclass="tokenvariable">b ]
then
echo “
a
<
/
s
p
a
n
>
−
e
q
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -eq <span class="token variable">
a</span>−eq<spanclass="tokenvariable">b : a 等于 b”
else
echo “
a
<
/
s
p
a
n
>
−
e
q
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -eq <span class="token variable">
a</span>−eq<spanclass="tokenvariable">b: a 不等于 b”
fi
# -ne 是否不相等
if [
a
<
/
s
p
a
n
>
−
n
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -ne <span class="token variable">
a</span>−ne<spanclass="tokenvariable">b ]
then
echo “
a
<
/
s
p
a
n
>
−
n
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -ne <span class="token variable">
a</span>−ne<spanclass="tokenvariable">b: a 不等于 b”
else
echo “
a
<
/
s
p
a
n
>
−
n
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -ne <span class="token variable">
a</span>−ne<spanclass="tokenvariable">b : a 等于 b”
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
大于-gt 小于-lt 大于等于-ge 小于等于-le
a=10
b=20
# 大于
if [
a
<
/
s
p
a
n
>
−
g
t
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -gt <span class="token variable">
a</span>−gt<spanclass="tokenvariable">b ]
then
echo “
a
<
/
s
p
a
n
>
−
g
t
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -gt <span class="token variable">
a</span>−gt<spanclass="tokenvariable">b: a 大于 b”
else
echo “
a
<
/
s
p
a
n
>
−
g
t
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -gt <span class="token variable">
a</span>−gt<spanclass="tokenvariable">b: a 不大于 b”
fi
# 小于
if [
a
<
/
s
p
a
n
>
−
l
t
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -lt <span class="token variable">
a</span>−lt<spanclass="tokenvariable">b ]
then
echo “
a
<
/
s
p
a
n
>
−
l
t
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -lt <span class="token variable">
a</span>−lt<spanclass="tokenvariable">b: a 小于 b”
else
echo “
a
<
/
s
p
a
n
>
−
l
t
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -lt <span class="token variable">
a</span>−lt<spanclass="tokenvariable">b: a 不小于 b”
fi
# 大于等于-ge
if [
a
<
/
s
p
a
n
>
−
g
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -ge <span class="token variable">
a</span>−ge<spanclass="tokenvariable">b ]
then
echo “
a
<
/
s
p
a
n
>
−
g
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -ge <span class="token variable">
a</span>−ge<spanclass="tokenvariable">b: a 大于或等于 b”
else
echo “
a
<
/
s
p
a
n
>
−
g
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -ge <span class="token variable">
a</span>−ge<spanclass="tokenvariable">b: a 小于 b”
fi
# 小于等于-le
if [
a
<
/
s
p
a
n
>
−
l
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -le <span class="token variable">
a</span>−le<spanclass="tokenvariable">b ]
then
echo “
a
<
/
s
p
a
n
>
−
l
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -le <span class="token variable">
a</span>−le<spanclass="tokenvariable">b: a 小于或等于 b”
else
echo “
a
<
/
s
p
a
n
>
−
l
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -le <span class="token variable">
a</span>−le<spanclass="tokenvariable">b: a 大于 b”
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
与或非
a=10
b=20
# -a 与运算
if [
a
<
/
s
p
a
n
>
−
l
t
100
−
a
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -lt 100 -a <span class="token variable">
a</span>−lt100−a<spanclass="tokenvariable">b -gt 15 ]
then
echo “
a
<
/
s
p
a
n
>
小
于
100
且
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> 小于 100 且 <span class="token variable">
a</span>小于100且<spanclass="tokenvariable">b 大于 15 : 返回 true”
else
echo “
a
<
/
s
p
a
n
>
小
于
100
且
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> 小于 100 且 <span class="token variable">
a</span>小于100且<spanclass="tokenvariable">b 大于 15 : 返回 false”
fi
# 或运算
if [
a
<
/
s
p
a
n
>
−
l
t
100
−
o
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -lt 100 -o <span class="token variable">
a</span>−lt100−o<spanclass="tokenvariable">b -gt 100 ]
then
echo “
a
<
/
s
p
a
n
>
小
于
100
或
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> 小于 100 或 <span class="token variable">
a</span>小于100或<spanclass="tokenvariable">b 大于 100 : 返回 true”
else
echo “
a
<
/
s
p
a
n
>
小
于
100
或
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> 小于 100 或 <span class="token variable">
a</span>小于100或<spanclass="tokenvariable">b 大于 100 : 返回 false”
fi
# 非
if [
a
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
o
p
e
r
a
t
o
r
"
>
!
=
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> <span class="token operator">!=</span> <span class="token variable">
a</span><spanclass="tokenoperator">!=</span><spanclass="tokenvariable">b ]
then
echo “
a
<
/
s
p
a
n
>
!
=
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> != <span class="token variable">
a</span>!=<spanclass="tokenvariable">b : a 不等于 b”
else
echo “
a
<
/
s
p
a
n
>
=
=
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> == <span class="token variable">
a</span>==<spanclass="tokenvariable">b: a 等于 b”
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
AND OR
a=10
b=20
if [[ KaTeX parse error: Expected 'EOF', got '&' at position 47: …oken operator">&̲amp;&</span…b -gt 100 ]]
then
echo “返回 true”
else
echo “返回 false”
fi
if [[
a
<
/
s
p
a
n
>
−
l
t
100
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
o
p
e
r
a
t
o
r
"
>
∣
∣
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -lt 100 <span class="token operator">||</span> <span class="token variable">
a</span>−lt100<spanclass="tokenoperator">∣∣</span><spanclass="tokenvariable">b -gt 100 ]]
then
echo “返回 true”
else
echo “返回 false”
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
五、流程控制
if else
### if else
if condition
then
command1
else
command2
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
### if else-if else
if condition1
then
command1
elif condition2
then
command2
else
command3
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
### 举例
a=10
b=20
if [
a
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
o
p
e
r
a
t
o
r
"
>
=
=
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> <span class="token operator">==</span> <span class="token variable">
a</span><spanclass="tokenoperator">==</span><spanclass="tokenvariable">b ]
then
echo “a 等于 b”
elif [
a
<
/
s
p
a
n
>
−
g
t
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -gt <span class="token variable">
a</span>−gt<spanclass="tokenvariable">b ]
then
echo “a 大于 b”
elif [
a
<
/
s
p
a
n
>
−
l
t
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
a</span> -lt <span class="token variable">
a</span>−lt<spanclass="tokenvariable">b ]
then
echo “a 小于 b”
else
echo “没有符合的条件”
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
for 循环
for loop in 1 2 3
do
echo "The value is: $loop"
done
#结果
The value is: 1
The value is: 2
The value is: 3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
for str in 'This is a string'
do
echo $str
done
#结果
This is a string
- 1
- 2
- 3
- 4
- 5
- 6
- 7
六、sed命令在MAC与Linux 使用方式
Linux使用
#直接将file文件里的printa替换为printb
sed -i 's/printa/printb/' test.txt
- 1
- 2
Mac使用
#mac的使用方式sed -ixxx 's/被替换文本/替换文本/' test.txt
sed -i.bak 's/printa/printb/' test.txt
- 1
- 2
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet">
</div>