Linux shell 脚本

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/aiwusheng/article/details/90612153

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>lt100a<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>lt100o<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;&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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值