shell编程学习笔记之一--学习第一天

文章目录

  • 一、说明:
    • 1、整理一些linux命令必须熟练掌握常的命令(复习+扩展学习Linux命令)
    • 2、Linux下vim/vi 编辑器 命令总结
    • 3、学习课件:
  • 二、跟着视频实践开始:
    • 1、打出hello world:
      • ①、更改sh文件权限执行
      • ②、不更改文件权限执行:
    • 2、shell编程之变量
      • ①、变量的简单使用
      • ②、几个shell的常见系统变量
        • 1、测试`$0`和`$n`:
        • 2、测试`$*、$#、$?`
      • ③、LAMP菜单导航编写:
    • 3、if条件语句:
      • ①、判断俩个数字大小
      • ②、一些逻辑运算符(熟练记得)
      • ③、判断文件夹是否存在:
      • ④、判断文件是否存在:
      • ④、成绩分数分类:

一、说明:

打算从B站学习一下shell编程,从很多的课程视频中,挑选了一个:
B站视频地址:
打算开始学习着做着笔记:
这个需要一些Linux基础,还有vim的,如果不太熟练,可以看下我之前的整理的俩个博客:

1、整理一些linux命令必须熟练掌握常的命令(复习+扩展学习Linux命令)

整理一些linux命令必须熟练掌握常的命令(复习+扩展学习Linux命令)

2、Linux下vim/vi 编辑器 命令总结

Linux下vim/vi 编辑器 命令总结

3、学习课件:

这个地址我直接把B站中评论下方分享的弄出来了,如果失效,可以下方评论,我把我下载的分享给你。
下载地址

二、跟着视频实践开始:

建议打开我之前的来个博客(如果对vim和linux不太熟悉),然后看着视频,开始学习跟着视频写出代码。如果只看一遍,我感觉我是记不住的,还能多熟练一下Linux知识。

第一天,加油!!!

1、打出hello world:

①、更改sh文件权限执行

linux的命令,我这里新建一个学习文件夹,跟着学习视频系统学习一波shell编程:

mkdir shell_study
cd shell_study/
vim first_shell.sh

在first_shell.sh中敲入这些代码,(建议和我一样的之前不会shell的,自己敲一遍,不要做眼高手低的人。)

#!/bin/bash
#Filename:first_shell.sh
#auto echo hello world!
#by authors zhaojiafu 2019

echo "Hello world!"

echo 相当于python的print,就是一个打印的功能

shell编程学习笔记之一--学习第一天_第1张图片

然后,wq保存即可(vim的文本操作,小白不会的可以打开我的vim博客,需要什么搜索跟着实现)。

然后更改文件权限chmod
这个我**linux命令必须熟练掌握常的命令**这个博客里面有常用的一些命令总结。不会的也可以常常学习看看。

chmod 777 first_shell.sh
chmod o+x first_shell.sh

然后:

./first_shell.sh

打印出Hello world!:
he

第一个shell命令就完成了,是不是很简单。

②、不更改文件权限执行:

看到视频的命令,他用的问件是同一个,而且之前的权限改了,所以,我重新再写一个,测试试试:

vim first_shell2.sh

写入:

#!/bin/bash
#Filename:first_shell.sh
#auto echo hell world!
#by authors zhaojiafu 2019

echo "Hello world22!"

shell编程学习笔记之一--学习第一天_第2张图片
然后保存:

/bin/bash ./first_shell2.sh

在这里插入图片描述

为了再一次证实俩个文件权限不一样:

ll

在这里插入图片描述

可以看出俩个文件权限确实不一样,但是都可以实现,这样,对于视频的讲解也能更理解深刻了,这样虽说学习的速度是慢了一些,但对于第一次学习,效果觉得很好,坚持下去,学会了才是自己的,不然还是别人的。

2、shell编程之变量

①、变量的简单使用

变量的使用需要$ 而且赋值不需要空格,和python有区别。

vim var.sh

敲入代码(熟练vim的可以复制,其他建议自己和我一样,敲出来学习效果比较好,以后不再赘述):

#!/bin/bash
#define path variables
#by authors zhaojiafu 2019

name=zhaojiafu

echo "My name is $name"

echo $UID

echo $PWD

然后直接使用不更改权限执行shell脚本:
在这里插入图片描述

②、几个shell的常见系统变量

SHELL 常见的系统变量解析 :
$0 当前程序的名称
$n 当前程序的第 n 个参数 ,n=1,2, , 9
$* 当前程序的所有参数 ( 不包括程序本身 )
$# 当前程序的参数个数 ( 不包括程序本身 )
$? 命令或程序执行完后的状态,一般返回 0 表示执行成功。
$UID 当前用户的 ID
$PWD 当前所在的目录

1、测试$0$n:

vim var.sh

敲入代码:

#!/bin/bash
#define path variables
#by authors zhaojiafu 2019

name=zhaojiafu

echo "My name is $name"

echo $UID

echo $PWD


echo "***********************************"

echo "$ 0 $0 "

echo "$ 1 $1"
echo "$ 2 $2"
~              

我感觉这样更能表达出效果:
$0就是文件名称
$1和$2为空

/bin/bash var.sh

shell编程学习笔记之一--学习第一天_第3张图片

/bin/bash var.sh hello word everyone

这个就是shell会把空格分开的作为传入的参数。
shell编程学习笔记之一--学习第一天_第4张图片

2、测试$*、$#、$?

vim var.sh

敲入代码:

#!/bin/bash
#define path variables
#by authors zhaojiafu 2019

name=zhaojiafu

echo "My name is $name"

echo $UID

echo $PWD


echo "***********************************"

echo "$ 0 $0 "

echo "$ 1 $1"
echo "$ 2 $2"

echo "***********************************"

echo "This is \$* $*"
echo "This is \$\# $#"
echo "This is \$? $?"

执行shell脚本:

/bin/bash var.sh hello word everyone

shell编程学习笔记之一--学习第一天_第5张图片

③、LAMP菜单导航编写:

vim var2.sh

敲入代码:

#!/bin/bash
#by authors zhaojiafu 2019

echo -e "\033[31m Please select Menu follow:\033[1m"

echo "1)安装apache服务器."
echo "2)安装Mysql服务器."
echo "3)安装PHP服务器."
echo "4)配置LAMP WEB架构."

echo "---------------------------------------------"

保存后执行:
发现视频中,直接sh 后面跟着shell脚本也是可以执行。现在知道三个方式可以执行shell脚本命令了。
shell编程学习笔记之一--学习第一天_第6张图片

3、if条件语句:

①、判断俩个数字大小

vim if_test.sh

敲入逻辑代码:
记得:

  1. if后面要跟then
  2. 最后面要跟上fi才算得上完整的if语句,不然报错。
#!/bin/bash
#auto if test
#by authors zhaojiafu 2019

NUM1=100
num2=200

if (($NUM1 > $num2));then
        echo "This is $NUM1 greate $num2"
else
        echo "This is $NUM1 less $num2"
fi

运行脚本:

sh if_text.sh

在这里插入图片描述

②、一些逻辑运算符(熟练记得)

逻辑运算符解析:

-f  判断文件是否存在 eg: if [ -f filename ]
-d  判断目录是否存在 eg: if [ -d dir ]
-eq  等于 应用于:整型比较
-ne  不等于 应用于:整型比较
-lt  小于 应用于:整型比较
-gt  大于 应用于:整型比较
-le  小于或等于 应用于:整型比较
-ge  大于或等于 应用于:整型比较
-a  双方都成立( and) 逻辑表达式 –a 逻辑表达式
-o  单方成立( or) 逻辑表达式 –o 逻辑表达式
-z  空字符串

③、判断文件夹是否存在:

注意点

  1. 判断的中括号必须要都有空格,不然报错,我第一次$path]没有空格,就会报错。 [ ! -d $path ]
  2. 使用颜色字体,记得echo后面跟着-e,我刚刚忘了,然后没颜色,还把\033[32m这些都打印出来了。后来加入-e 就好了。

vim创建文件,并进入敲入代码

vim if_is_dir.sh

敲入代码:

其中这个路径可以是相对路径(相对于当前shell执行脚本文件的位置),因为视频的教学中使用的是绝对路径,我这里直接使用相对路径测试。

#!/bin/bash
#auto is dir
#by zhaojiafu 2019

path=./shell_study/1

if [ ! -d $path ];then
        mkdir -p $path
        echo -e "\033[32m$path create success! \033[0m"
else
        echo -e  "\033[32m$path id exists,exit\033[0m"
fi

输入执行shell脚本命令:

/bin/bash if_is_dir.sh

然后自动创建一个文件夹
在这里插入图片描述
创建了文件夹。
shell编程学习笔记之一--学习第一天_第7张图片

到这里,我想使用之前的一个常用系统变量$n传参进行一个自动化脚本,判断是否存在目录。

代码改为:
只是把之前的固定目录,换成了$1,用来传参。

#!/bin/bash
#auto is dir
#by zhaojiafu 2019

#path=./shell_study
path=$1

if [ ! -d $path ];then
        mkdir -p $path
        echo -e "\033[32m$path create success! \033[0m"
else
        echo -e  "\033[32m$path id exists,exit\033[0m"
fi

然后执行命令试试:

/bin/bash if_is_dir.sh 1/2

在这里插入图片描述
shell编程学习笔记之一--学习第一天_第8张图片
进入1目录,还有个2目录:
在这里插入图片描述
所以我们测试成功了。

如果再执行一次,就会提示已经存在目录。
在这里插入图片描述

④、判断文件是否存在:

vim is_file.sh

写入代码:

#!/bin/bash
#auto is file
#by authors zhaojiafu 2019

File=$1

if [ ! -f $File ];then
        echo "ok" >> $File
else
        echo -e "\033[32m-----------------------------------\033[1m"
        cat $File
fi

第一次执行:
在这里插入图片描述
第二次执行:
在这里插入图片描述

④、成绩分数分类:

创建shell脚本

vim score.sh

敲入逻辑代码:

#!/bin/bash
#auto score class
#by authors zhaojiafu 2019

score=$1

if [ -z $score ];then
        echo "请输入分数"
        exit
else
        if [ $score -gt 90 ];then
                echo "优秀"
        elif [ $score -gt 80 ];then
                echo "良好"
        elif [ $score -gt 70 ];then
                echo "中等"
        elif [ $score -gt 60 ];then
                echo "及格"
        else
                echo "不及格"
        fi
fi
              

测试:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
结果输入110 竟然页数优秀,所以,需要加个限制:

在这里插入图片描述

这个不知道为什么,我把大于100或者小于0合并到一个判断里面,总是报错,分开就好了,如果有懂得欢迎给我讲讲哈。

#!/bin/bash
#auto score class
#by authors zhaojiafu 2019

score=$1

if [ -z $score ];then
        echo "请输入分数"
        exit
elif [[ $score -gt 100 ]];then
        echo "输入的分数有误,分数在0-100之间"

# elif [[ $score -gt 100 -o  $score -lt 0 ]];then
elif [[ $score -lt 0 ]];then
        echo "输入的分数有误,分数在0-100之间"
else
        if [ $score -gt 90 ];then
                echo "优秀"
        elif [ $score -gt 80 ];then
                echo "良好"
        elif [ $score -gt 70 ];then
                echo "中等"
        elif [ $score -gt 60 ];then
                echo "及格"
        else
                echo "不及格"
        fi
fi

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

你可能感兴趣的:(shell编程)