zoukankan      html  css  js  c++  java
  • 【推荐】构建脚本之shell编写规范

    本文档总结了编写shell脚本时推荐的代码规范。

    1.#!/usr/bin/env bash

    指定脚本使用的shell,比较灵活。

    2.set -eux

    当前shell的执行方式1

    -e:脚本运行非0则退出

    -u:有不存在的变量则报错

    -x:调试脚本,详细的日志输出,免得去echo

    3.set -o pipefail

    当前shell的执行方式2

    表示管道中任何一个命令失败都退出脚本

    4.当前脚本包含外部脚本时(不会开启子shell进程):

      (1). filename

      (2)source filename,使shell读入指定的shell程序文件并依次执行文件中的所有语句

      注:source 和 . 不开启子shell,在当前shell中执行,设定的局部变量在执行完命令后仍然有效。

      注:bash 或 sh 或 shell script 执行时,起子shell,其继承父shell的环境变量,子shelll的变量和父shell没联系。

      注:shell 的内件命令exec执行命令时,不启用子shell进程,用被执行的命令行替换掉当前的shell进程。

        

    例如在当前shell中执行 exec pwd 表示用pwd替换当前shell进程 ,即为执行完后会退出当前shell。

    可以将exec命令放到一个shell脚本中,用主脚本调用这个脚本,调用处用bash  xx.sh(xx.sh为存放exec命令的脚本),这样会为xx.sh建立一个子shell去执行,当执行exec后该子脚本进程就被替换成相应的exec的命令。

    5.查找并删除进程

    ps -ef |grep 'mysql' |grep -v grep |awk '{print $2}' |xargs kill -9

    6.[]里面如果有变量,给其使用双引号

    [-f $filename]改为[-f "$filename"]

    7.变量

      (1)环境变量大写=>NAME

      (2)自定义变量小写=>name

      (3)特殊变量,通过命令行传递参数进行计算,$0代表脚本名字

      (4)exec "$@" =>执行传进来的所有参数,此命令会替代子she进程。

      (5)if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi =>$()和反引号用来引用命令,得到的是命令的执行结果

  • 相关阅读:
    参考Shiro的自定义基于Spring的AOP横切模式
    Spring-@Value获取配置文件内容
    BeanPostProcessor Bean实例的初始化前后的自定义修改
    两台Linux主机之间免密scp复制文件及远程启动关闭Tomcat
    Shiro Realm领域
    test
    Linux 安装Oracle数据库
    Shiro Authorizer授权器
    HDU 1079 Calendar Game (博弈)
    MooFest POJ
  • 原文地址:https://www.cnblogs.com/frantz/p/13563549.html
Copyright © 2011-2022 走看看