闪电入门shell脚本(二)

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

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

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

shell 循环递归

#!/bin/bash
function recursive_func() {

    echo -n "Press anything to continue loop"
    read input
    recursive_func
}
recursive_func
exit 0

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

shell循环之for

#!/bin/bash
for (( ; ; ))
do 
  echo "loop ever"
  sleep 1
done
exit 0

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

直到Ctrl+C退出。

shell循环之while

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

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

shell循环之untile

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

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脚本,且启动的脚本是可选择的,这应该怎么办?

分析: 启动多个脚本------- 需要shell脚本的地址 启动脚本可选择----- 需要判断且可循环

根据需求,分析出了需要的技术要求,最主要的就是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
    fi
done

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

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

最后的追叙:

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

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

Jia Feng

我喜欢的东西很贵,想去的地方很远,朝着目标前进。虽然苦,但是我还是会选择那种滚烫的人生

`