Shell学习从入门到实战

前言

因为之前对项目的部署只是停留在用xshell连接云服务器,然后运行jar包,tomcat运行war包等形式进行部署,到了每次要部署的时候都要重复输入指令,效率太差。所有就想是不是可以利用脚本来进行项目的部署,毕竟大家都是这么干滴!所以博主就在b乎上找了尚硅谷的linux教学视频(这里不得不称赞一下,尚硅谷的教学视频还是做的挺不错的),从linux常用指令入手到shell脚本编写,博主真的是收益匪浅,感觉对linux的熟悉程度又上升了一个层次了。

好的,废话不多说,我们开始讲讲shell有哪些基础知识,并且针对每一个点都会进行实战操作,让大家快速上手shell。

shell基础

linux系统中,由下到上分为硬件层,linux内核层,shell层,应用软件层。所有shell就是操作linux内核的一种脚本语言,具体关系如图:
Shell学习从入门到实战_第1张图片

入门介绍,如何输出一个"hellow word"

创建一个shell脚本步骤:

  • 通过vi helloword.sh来进行创建(后缀可以不是.sh,主要看个人习惯)
  • 脚本里面第一行写:#!/bin/bash
  • 利用echo "hellow word"输出
  • 为脚本赋予权限:chmod 755 helloword.sh
  • 执行脚本./helloword.sh 或 sh helloword.sh
    在这里插入图片描述
    Shell学习从入门到实战_第2张图片
    在这里插入图片描述

变量

shell中变量分为自定义变量和环境变量。

自定义变量

定义变量:变量=值
撤销变量:unset 变量
声明静态变量:readonly 变量 (注意:该类型变量不能被unset)
案例:

A = 100
echo "A=$A"
unset A
echo "A=$A"

在这里插入图片描述
在这里插入图片描述
注意事项:

  • 变量名不能以数字开头
  • =号两边不能又空格
  • 变量名一般大写
  • 引用变量时用$符号
  • 赋值采用反引号RESULT=ls -l /home
  • 赋值采用括号RESULT=(date)

环境变量

环境变量位于/etc/profile下,可以使用vi /ect/profile查看。
Shell学习从入门到实战_第3张图片
这里可以定义环境变量,格式为:export vsftpd=vsftpd8。
通过source /ect/profile更新环境变量。
在脚本里面输出设置好的环境变量:echo “$vsftpd”
Shell学习从入门到实战_第4张图片
Shell学习从入门到实战_第5张图片
在这里插入图片描述

位置参数

位置参数主要有四种,分为:

$n,$*,$@,$#,其中:
$n,表示第几个参数
$*,表示参数整体
$@,表示参数分区展示
$#,表示参数个数

具体实例:

#!/bin/bash
echo "$0,$1,$2"
echo "$*"
echo "$@"
echo "$#"

Shell学习从入门到实战_第6张图片
Shell学习从入门到实战_第7张图片

预定义变量

预定义变量主要分为3个,分别是:

$$,$!,$?,其中:
$$ 表示当前进程号的pid
$!表示最后一个进程号的pid
$?表示最后一次命令的返回状态,为0则执行成功,为1则失败。

Shell学习从入门到实战_第8张图片
在这里插入图片描述

条件判断

shell中条件判断通过[ condition ],注意中括号两头有空格,常用判断条件:

整数判断:
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne  不等于
文件权限判断:
-r 读权限
-w 写权限
-x 有执行权限
文件类型判断:
-f 文件存在并且是常规文件
-e 文件存在
-d 文件存在并是目录

案例:通过if判断/ect/vsftpd.conf文件是否存在,是否有可执行权限。步骤:

  if [ /etc/vsftpd.conf -e ]
  then 
  echo "文件存在"
  elif [ /etc/vsftpd.conf -x ]
  then
  echo "文件有可执行权限"
  fi

Shell学习从入门到实战_第9张图片
在这里插入图片描述

流程控制

case判断

shell中多分之判断类似于java中的switch,具体用法如下:

输入一个变量,根据输入判断是星期几。
case $1 in 
"1") 
echo "周一"
;;
"2")
echo "周二"
;;
"3")
echo "周三"
;;
esac

Shell学习从入门到实战_第10张图片
在这里插入图片描述

for循环

for循环输出控制台输入的参数:

for i in "$@"
do
echo "the num is $i"
done

在这里插入图片描述
在这里插入图片描述

while循环

获取控制台参数进行求和:

k=0
sum=0
while [ $k -le $1 ]
do
sum=$[$sum+$k]
k=$[$k+1]
done
echo "sum为$sum"

Shell学习从入门到实战_第11张图片
在这里插入图片描述

尾声

以上就是学习shell过程中的基础知识和案例了,看到这里,你兴许就知道了如何快速写出部署jar包的脚本了吧。没错,就是几行shell就能搞定的事。
附图:
Shell学习从入门到实战_第12张图片
是不是感觉太水了,哈哈。博主下学期的学习目标是尚硅谷的SpringCloud课程,然后通过实战方式来重构自己的微招聘App后台部分。
谢谢阅读,不好之处欢迎指点。
勿喷渣渣博主,与君共勉!!

你可能感兴趣的:(shell,linux,脚本,项目部署)