vlambda博客
学习文章列表

闪电入门 Linux shell脚本(二)

#人生就有许多这样的奇迹,看似比登天还难的事,有时轻而易举就可以做到,其中的差别就在于非凡的信念


友情提示:

        关注即可收获更多Linux、嵌入式、深度学习方面知识,阅读本文即可收获shell脚本中的循环、函数以及综合的简单应用。


上篇,讲解了最长用的if判断语句,除了这些还有case/switch,以及循环中的for、do while循环。

我建议,先有印象格式用到了再看一眼就好,没必要一上来都死记硬背。今天再给大家分享些常用的循环、函数和参数。


# shell循环之递归

#!/bin/bashfunction recursive_func() {
    echo -n "Press anything to continue loop"    read input    recursive_func}recursive_funcexit 0

该递归脚本,使用read等待用户输入,并将其保存到$input变量中,每当read结束之后,便会再次调用自身,会不断循环下去,直到Ctrl+C退出。

闪电入门 Linux shell脚本(二)

输入数据按下回车之后,才能进行下次循环。


# shell循环之for

#!/bin/bashfor (( ; ; ))do  echo "loop ever"  sleep 1doneexit 0

使用了for和(( ; ; )) 组合成了无限循环,不断输出loop ever 并每次sleep 1秒。

直到Ctrl+C退出。

闪电入门 Linux shell脚本(二)


# shell循环之while

#!/bin/bash EXIT_PLEASE=0while :do  echo "Pres CTRL+C to stop ..."  sleep 1  if [ $EXIT_PLEASE != 0 ]; then    break  fidoneexit 0

脚本中使用了空命令的while循环,将会无限循环,直到按下Ctrl+C退出。


# shell循环之until 

考虑使用不多,就不赘述了,有兴趣自行查找。


# shell脚本之函数

function是shell脚本预留的一个关键字。

函数可接受参数,参数类似于变量,可在函数外部设置,函数内使用。

#!/bin/bash
.function my_firstFunction() {    local PARAM_1="$1"    local PARAM_2="$2"    local PARAM_3="$3"    echo "${PARAM_1} ${PARAM_2} ${PARAM_3}"}my_firstFunction "a" "b" "c"

脚本中的函数使用了function保留字声明为my_firstFunction。函数的内容使用{}包围。

    1.其中 "$1" "$2" "$3"分别表示第一个参数,第二个参数,第三个参数。

    2. 关键字local表示以此关键字声明的变量只能在该函数中访问。

    3. 调用函数的时候,只需要提供函数名称和参数即可。




# 实例分享


需求:

我们需要启动多个的shell脚本,且启动的脚本是可选择的,这应该怎么办?


分析:

  1. 启动脚本可选择-----    需要判断且可循环


根据需求,分析出了需要的技术要求,最主要的就是2中的技术功能。这让我想到了守护进程。

#!/bin/bash
FilePath1="./test1.sh" # 目录中的脚本
FilePath2="./test_f/test2.sh"
FilePath3="./for_test.sh"
function run_sh1 () { # cd $FilePath1 bash ${FilePath1}
}
function run_sh2 () { bash ${FilePath2}}
function run_sh3 () { bash ${FilePath3}}
function echo_fun () { echo -e "${FilePath1} --> fun_sh1 --> input 1 " echo -e "${FilePath2} --> fun_sh2 --> input 2 " echo -e "${FilePath3} --> fun_sh3 --> input 3 "}
while :do echo_fun read input if [ ${input} -eq 1 ]; then run_sh1 elif [ ${input} -eq 2 ]; then run_sh2 else run_sh3 fidone

有这样一个简单的脚本,我们启动的时候可以有选择性的去启动,也算是比较简单的方式了。同时也是对函数,循环,判断的一个简单的综合应用。其他的就是依靠这些基础进行进一步学习了。 

当然,上面的仅仅是一个简单的事例,最终可能会有sudo权限执行的问题,以及脚本中嵌套输入的问题,还有后台启动等等,我们之后聊吧!


最后的追叙:

脚本其实没有很复杂,看我这两篇再多写写就会了,简单的几行就能基本满足我们日常的工作需求。

到此闪电入门shell结束啦!对你有帮助,希望可以点赞,分享,投币,感谢你对我的支持,同时也想对你说一声,爱学习你的超帅、超棒、超厉害的!


End 2022-3-11 23:51