配置jenkins打包环境时,用到了linux的shell脚本,了解一下其基本的语法。
本文学习自:
https://www.runoob.com/linux/linux-shell.html
#!/bin/bash
echo "Hello World !"
your_name="runoob.com"
#!/bin/bash
myUrl="http://www.google.com"
readonly myUrl
# myUrl 为只读变量 这里赋值是错误的
myUrl="http://www.runoob.com"
unset variable_name
your_name="qinjx"
echo $your_name
echo ${your_name}
# 养成使用 ${your_name} 括号的良好习惯
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 输出结果
hello, runoob ! hello, runoob !
string="abcd"
echo ${#string}
#输出 4
string="runoob is a great site"
echo ${string:1:4}
# 输出 unoo
# 查找字符 i 或 o 的位置(哪个字母先出现就计算哪个)
string="runoob is a great site"
echo `expr index "$string" io`
# 输出 4
注意: 以上脚本中 ` 是反引号,而不是单引号 '
# 定义数组
array_name=(value0 value1 value2 value3)
# 定义数组
array_name=(
value0
value1
value2
value3
)
# 定义数组
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
# 读取数组
valuen=${array_name[0]}
# 读取数组的所有元素
echo ${array_name[@]}
# 取得数组单个元素的长度
lengthn=${#array_name[0]}
# 取得数组元素的个数
length=${#array_name[@]}
# 取得数组元素的个数
length=${#array_name[*]}
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
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
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
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 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 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
#直接将file文件里的printa替换为printb
sed -i 's/printa/printb/' test.txt
#mac的使用方式sed -ixxx 's/被替换文本/替换文本/' test.txt
sed -i.bak 's/printa/printb/' test.txt