zoukankan      html  css  js  c++  java
  • 够用的 shell 脚本

    shell 脚本随处可见,甚至有些项目就是由 shell 脚本组成的

    如果你想使用 shell 脚本自动化执行流程,或者看懂 shell 脚本,需要哪些知识呢

    这里简单讲几个点

    0 shell 适用于什么情况?

    1. 小工具
    2. 包装脚本编译代码
    3. 调用其他高级语言(调度)
    4. 少量的数据处理

    1 获得参数

    $ example_command  1 2 3
    

    在执行命令后面加了三个参数

    在程序中可以这样获取

    # 命令本身,即: example_command 
    echo $0
    # 1
    echo $1
    # 2
    echo $2
    # 3
    echo $3
    

      

    如果是一个 shell 函数要获取参数呢?

    也是类似!

    function_call () {
        echo $1
    }
    
    function_call "call function"  

    2 如何模块化

    借助 source 命令

    # a.sh
    
    function function_a() {
        echo 'a'
    # 函数内部变量尽量使用 local 关键字,作用域能够限制在当前函数中
    local b=1 } # b.sh source a.sh function_a

    3 提示是否继续

    while true; do
        read -r -p "Step $preStep done! Next Step is $nextStep. Are You Sure Continue? [Y/N] " input
    
        case $input in
        [yY][eE][sS] | [yY])
            echo "Continue"
            break
            ;;
        [nN][oO] | [nN])
            echo "opt exit, done."
            exit 1
            ;;
        *)
            echo "Invalid input..."
            ;;
        esac
    done
    

      

    如果不想输入错误一直提示,可以去掉 while 循环

    4 调试 shell 脚本

    • 多加 echo ,输出有用信息
    • 使用 set -x 命令

    set -x 命令输出示例:

    # a.sh
    set -x
    a='aaaaaaaa'
    echo $@
    echo "$@"
    echo $*
    echo "$*"

    5 计算

    有几种方式可以在 shell 中计算

    但是这里只说一种

    那就是双括号的形式

    # a.sh
    # 双括号中不能使用 $n 表示变量
    ((n = 10 / 3))
    echo $n
    

      

    6 shell 判断

    shell 的 test 提供了很多比较实用的比较方式

    比如:

    -e: 文件存在
    -f: 文件存在并且是普通文件
    

    停,如果全列出来就没意思了,只能是授之以鱼

    通过命令 man test 可以看到更详细的判断语法

  • 相关阅读:
    manjora20安装搜狗输入法
    manjora20使用体验
    deepin20体验
    deepin20搜狗输入法使用
    deepin20使用snap并设置代理
    C#服务器端使用office组件
    华为多屏互动看学英语
    ThinkPad S5立体声混响以及语音识别
    mate10碎屏机当成小电脑使用尝试
    刷机错误ERROR:STATUS_BROM_CMD__FAIL
  • 原文地址:https://www.cnblogs.com/wudanyang/p/13823722.html
Copyright © 2011-2022 走看看