Linux shell 脚本

Linux shell 脚本

配置jenkins打包环境时,用到了linux的shell脚本,了解一下其基本的语法。
本文学习自:
https://www.runoob.com/linux/linux-shell.html

一、打印 echo

#!/bin/bash
echo "Hello World !"

二、字符串

  • 定义字符串
  • 只读变量readonly
  • 删除字符串变量
  • 使用字符串变量
  • 字符串拼接
  • 字符串长度
  • 提取子字符串
  • 查找子字符串

1、定义字符串

your_name="runoob.com"

2、只读变量

#!/bin/bash
myUrl="http://www.google.com"
readonly myUrl
# myUrl 为只读变量 这里赋值是错误的
myUrl="http://www.runoob.com"

3、删除字符串变量

unset variable_name

4、使用字符串变量

your_name="qinjx"
echo $your_name
echo ${your_name}

# 养成使用 ${your_name} 括号的良好习惯

5、字符串拼接

your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1

# 输出结果
hello, runoob ! hello, runoob !

6、字符串长度

string="abcd"
echo ${#string} 

#输出 4

7、提取子字符串

string="runoob is a great site"
echo ${string:1:4} 

# 输出 unoo

8、查找子字符串

# 查找字符 i 或 o 的位置(哪个字母先出现就计算哪个)
string="runoob is a great site"
echo `expr index "$string" io`  

# 输出 4

注意: 以上脚本中 ` 是反引号,而不是单引号 '

三、数组

  • 定义数组
  • 读取数组
  • 获取数组的长度

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

2、读取数组

# 读取数组
valuen=${array_name[0]}
# 读取数组的所有元素
echo ${array_name[@]}

3、获取数组的长度

# 取得数组单个元素的长度
lengthn=${#array_name[0]}
# 取得数组元素的个数
length=${#array_name[@]}
# 取得数组元素的个数
length=${#array_name[*]}

四、运算符

  • 加减乘除
  • 相等-eq 不相等-ne
  • 大于-gt 小于-lt 大于等于-ge 小于等于-le
  • 与或非

加减乘除

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi

相等-eq 不相等-ne

a=10
b=20

# -eq 是否相等
if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等于 b"
else
   echo "$a -eq $b: a 不等于 b"
fi

# -ne 是否不相等
if [ $a -ne $b ]
then
   echo "$a -ne $b: a 不等于 b"
else
   echo "$a -ne $b : a 等于 b"
fi

大于-gt 小于-lt 大于等于-ge 小于等于-le

a=10
b=20

# 大于
if [ $a -gt $b ]
then
   echo "$a -gt $b: a 大于 b"
else
   echo "$a -gt $b: a 不大于 b"
fi

# 小于
if [ $a -lt $b ]
then
   echo "$a -lt $b: a 小于 b"
else
   echo "$a -lt $b: a 不小于 b"
fi

# 大于等于-ge
if [ $a -ge $b ]
then
   echo "$a -ge $b: a 大于或等于 b"
else
   echo "$a -ge $b: a 小于 b"
fi

# 小于等于-le
if [ $a -le $b ]
then
   echo "$a -le $b: a 小于或等于 b"
else
   echo "$a -le $b: a 大于 b"
fi

与或非

a=10
b=20

# -a 与运算
if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
   echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi

# 或运算
if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a 小于 100 或 $b 大于 100 : 返回 true"
else
   echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi

# 非
if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a == $b: a 等于 b"
fi

AND OR

a=10
b=20

if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

五、流程控制

if else

### if else

if condition
then
    command1
else
    command2
fi
### if  else-if else

if condition1
then
    command1
elif condition2 
then 
    command2
else
    command3
fi
### 举例

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

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
for str in 'This is a string'
do
    echo $str
done

#结果
This is a string

六、sed命令在MAC与Linux 使用方式

Linux使用

#直接将file文件里的printa替换为printb
sed -i 's/printa/printb/' test.txt

Mac使用

#mac的使用方式sed -ixxx 's/被替换文本/替换文本/' test.txt
sed -i.bak 's/printa/printb/' test.txt

你可能感兴趣的:(Shell脚本)