因为公司里有个项目改完ui层后,需要运行很多命令才能讲ui层打包并重启项目,那些命令一个一个的去复制感觉有些麻烦,所以想弄个shell脚本来解决这个问题。
1. Hello World!
脚本
#!/bin/bash // #!是一个约定,告诉系统这个脚本需要何种解释器来执行
echo "Hello World!" //echo命令用于向窗口输出文本。
执行
将上面的代码保存为test.sh,并cd到相应目录:
chmod +x ./test.sh
,使脚本具有执行权限;
./test.sh
,执行脚本。
注意
必须写成./test.sh
,否则系统会从PATH
中寻找;如果使用/bin/sh
作为解释器,第一行可以省略。
2. read命令
#!/bin/bash
echo "Hello, what is your name?"
read PERSON
echo "Hello, $PERSON!" #此处必须是双引号,单引号不会使用变量的值
通过read
命令从stdin获取输入并赋值给PERSON
变量,最后在stdout上输出。
3. 定义变量
#!/bin/bash
myUrl="http://www.zhangshuang.top"
myName="张爽"
myAge = "26" #识别不出来,不能有空格
echo "My name is ${myName}"
echo "My blog site is $myUrl"
echo "I'm ${myAge} years old" #这句话会报错
变量名在使用的时候,前面必须有$
符号,可选添加{% raw %}{}{% endraw %}表示变量边界。从新定义变量跟第一次定义变量写法一样。
4. readonly 只读变量
#!/bin/bash
myUrl="http://www.zhangshuang.top"
readonly myUrl
myUrl="http://zhangshuang.top" #此句运行时会报错,提示该变量为只读变量
5. unset 删除变量
#!/bin/bash
myUrl="http://www.zhangshuang.top"
unset myUrl
echo "${myUrl}" #此句运行时会报错,提示找不到变量
myUrl="http://www.zhangshuang.top"
readonly myUrl
unset myUrl #报错,只读变量无法删除
echo "${myUrl}"
6. 获取字符串长度
#!/bin/bash
url="http://www.zhangshuang.top"
echo "url length is $#url" #${#url}获取字符串length
7. 提取字符串
#!/bin/bash
url="http://www.zhangshuang.top"
echo "${url:1:4}" #从第二个字符到第五个字符(索引从0开始)
8. if…else
if [ $PERSON == "shuang" ] #注意必须有空格
then
echo "My name is ${myName}" #缩进可以没有,有的话可读性高一些
echo "My blog site is ${myUrl}"
echo "I'm ${myAge} years old"
fi #表示结束
9. 完成一个命令后再执行另一个命令
#!/bin/bash
starttime=$(date +%s) #获取开始执行脚本的时间毫秒数
cd /usr/Hyg #进入项目路径
output=`docker rm -f hygui` #通过output使得该命令执行完后再执行下个命令
output=`docker rmi hyg-ui`
output=`mvn clean package -pl UI docker:build`
output=`docker run -d -h="hygui" -it -p 8088:80 --link`
10. 计算时间差
#!/bin/bash
starttime=$(date +%s) #获取开始执行脚本的时间毫秒数
# date +%Y-%m-%d获取当前日期
# 脚本内容
# 脚本内容
endtime=$(date +%s) #获取开始执行脚本的时间毫秒数
interval=`expr ${endtime} - ${starttime}` #计算项目运行时间
echo "INFO generated in ${interval} s" #输出时间差