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

一、说明:

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

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

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

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

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

3、学习课件:

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

4、之前的博客:

shell编程学习笔记之–学习第一天
shell编程学习笔记之–学习第二天
shell编程学习笔记之–学习第三天

二、实战演练:

1、Until 循环语句

1、语法格式

until  条件
do
action
done

直到满足条件,才退出。否则执行 action 。

2、打印出从10以下的数字:

vi  untile_demo1.sh

敲入代码:

#!/bin/bash
#auto until demo1
#by authors zhaojiafu

a=10;
until [[ $a -lt 0 ]];

do
        echo -e "\033[32mThe Num is $a !\033[01"
        ((a--))
done

在这里插入图片描述

2、case语句:

1、格式:

case $arg in
pattern1)
语句 1
;;
pattern2)
语句 2
;;
*)
语句 3
;;
esac

2、LAMP简单提示选择菜单:

创建sh脚本

vim case_demo.sh

敲入代码:

#!/bin/bash
# auto case demo
# by authors zjf 2019

case $1 in
        Apache )
        echo -e "\033[32m准备安装Apache。。。·\033[0m"
        ;;
        Mysql)
        echo -e "\033[32m准备安装Mysql。。。·\033[0m"
        ;;
        PHP)
        echo -e "\033[32m准备安装PHP。。。·\033[0m"
        ;;
        *)
        echo -e "\033[32mUsage $0 Apache|Mysql|PHP|help\033[0m"
        ;;
esac

执行效果:
在这里插入图片描述
在这里插入图片描述

3、select语句:

Select 一般用于选择菜单的创建,可以配合 PS3来做菜单的打印输
出信息。

1、开源系统选择:

vi select_demo.sh

敲入代码:

#! /bin/bash
#by authors zhaojiafu 2019

PS3="What you like most of the open source system?"

select i in "CentOS" "RedHat" "Ubuntu"

do
        echo  "You select $i"

done
    

运行效果:
在这里插入图片描述

2、结合LAMP做个选择菜单:

创建sh脚本文件

vi select_demo2.sh

敲入代码:

#! /bin/bash
#by authors zhaojiafu 2019

PS3="Select install LAMP Menu"

select i in "Apache" "Mysql" "PHP"

do

        case $i in
                Apache )
                echo -e "\033[32m准备安装Apache。。。·\033[0m"
                ;;
                Mysql)
                echo -e "\033[32m准备安装Mysql。。。·\033[0m"
                ;;
                PHP)
                echo -e "\033[32m准备安装PHP。。。·\033[0m"
                ;;
                *)
                echo -e "\033[32mUsage $0 Apache|Mysql|PHP|help\033[0m"
                ;;
        esac

done

执行结果:

在这里插入图片描述

4、函数:(这个我看到的那个B站视频课程不对,还好有课件,看课件自己消化学习学习)

1、定义:

shell 允许将一组命令集或语句形成一个可用块,这些块称为shell 函数,定义函数的格式:

function name (){
command1
........
}
name

2、求俩个数的和

先测试个简单函数的调用:

#!/bin/bash
#by authors zhaojiafu 2019

function number_one () {
   echo "Url_1 1111"
   number_two
}

function number_two () {
   echo "Url_2 is 2222"
}

number_one

在这里插入图片描述

function sum(){

        echo `expr $1 + $2`
}
if [[ ! -z $2 ]];then
        echo `sum`
else
        echo "Usage: $0 num1 num2"
fi

求和:

vi 2num.sh

敲入代码:

#!/bin/bash
#by authors zhaojiafu 2019

num1=3
num2=4

function sum(){

        echo `expr $num1 + $num2`
        #return `expr $num1 + $num2`
        ret1=`expr $num1 + $num2`
        return $ret1
}
result=`sum`
echo "the sum is ${result}"

注意点,这个我卡了好一会,

return `expr $num1 + $num2`

这个再函数中不会返回结果,需要前面给个变量,然后返回变量,或者直接

echo `expr $num1 + $num2`

shell函数中,如果没有返回return,会把echo的所有当成字符串返回。

比如下面的代码:

#!/bin/bash
#by authors zhaojiafu 2019

num1=3
num2=4

function sum(){
        ret1=`expr $num1 + $num2`
        echo `expr $num1 + $num2`
        echo $num1
        echo $num2
        #return `expr $num1 + $num2`
        #ret1=`expr $num1 + $num2`
        #return $ret1
}
result=`sum`
echo "the sum is ${result}&&&&&&"

输出结果:可以看出,直接函数返回的结果是含有数字+回车+数字+回车+数字的字符串。
在这里插入图片描述
有return,就会只返回return的结果。

比如代码:

#!/bin/bash
#by authors zhaojiafu 2019

num1=3
num2=4

function sum(){
        ret1=`expr $num1 + $num2`
        echo `expr $num1 + $num2`
        echo $num1
        echo $num2
        #return `expr $num1 + $num2`
        #ret1=`expr $num1 + $num2`
        return $ret1
}
result=`sum`
echo "the sum is ${result}&&&&&&"

结果输出不对呀,还是和刚刚一样,这样return没有看出效果呀。
在这里插入图片描述

改写代码:

#!/bin/bash
#by authors zhaojiafu 2019

num1=3
num2=4

function sum(){
        ret1=`expr $num1 + $num2`
        echo `expr $num1 + $num2`
        echo $num1
        echo $num2
        #return `expr $num1 + $num2`
        #ret1=`expr $num1 + $num2`
        return $ret1
}
#result=`sum`
#echo "the sum is ${result}&&&&&&"

sum
result=$?
echo "the sum is ${result}&&&&&&"

得到了我想要的结果,所以以后如果shell中想要函数的返回结果,还是先调用,然后使用$?得到想要的return结果。如果只是调用执行一些命令,而不需要返回结果,那就怎么样都行,只要进入函数就能执行。

在这里插入图片描述

5、Shell 数组编程

数组,就是相同数据类型的元素按一定顺序排列的集合,就是把 有限个类型相同的变量用一个名字命名, 然后用编号区分他们的变量的集合,这个名字成为数组名,编号成为下标。

创建sh脚本

vi arr1.sh

敲入代码:

#!/bin/bash
#auto arr1
#by zhaojiafu 2019

A=( "语文" "数学" "英语" "物理" "化学" )

#数组的第一个元素
echo ${A[0]}

#数组的第2个元素
echo ${A[1]}

#数组的第3个元素
echo ${A[2]}

#数组的最后一个元素
echo ${A[-1]}

#数组的所以元素1
echo  "数组的所以元素1:${A[@]}"

#数组的所以元素2
echo  "数组的所以元素2:${A[*]}"


# 数组的长度
echo "数组的长度:${#A[*]}"
echo "数组的长度:${#A[@]}"                       

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhaojiafu666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值