• 【转】shell中的$0 $n $# $* $@ $? $$ 变量 if case for while


    shell中的$0 $n $# $* $@ $? $$

     shell 编程 | shift 命令用法笔记

    $0
    当前脚本的文件名


    $n
    传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。


    $#
    传递给脚本或函数的参数个数。返回数字类型


    $*
    传递给脚本或函数的所有参数。返回参数列表

    $@
    传递给脚本或函数的所有参数。

    $* 和 $@ 都表示传递给函数或脚本的所有参数$* 和 $@ 的区别

    • 相同点:不被双引号" “包含时,都以”$1" “$2"…"$n” 的形式输出所有参数
    • 不同点:被双引号" “包含时,”$*" 会将所有的参数作为一个整体;"$@" 会将各个参数分开,以换行形式输出所有参数。


    $?
    上个命令的退出状态,或函数的返回值


    $$
    当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID

     

     

     

     

     

     

     

     

     

    if [ "$ciPosition" == "1" ]; then
        ciName="shop"
    elif [ "$ciPosition" == "2" ]; then
        ciName="sso"
    elif [ "$ciPosition" == "3" ]; then
        ciName="shuaige"
    fi

     

     

    case ${option} in
      api)
        command_api $@
        ;;
      front)
        command_front $@
        ;;
      sso)
        command_sso $@
        ;;
      crm)
        command_crm $@
        ;;
      admin)
        command_admin $@
        ;;
      -h|--help)
        usage
        exit 0
        ;;
      *)
        echo "Unexpected option: ${option} - this should not happen."
        usage
        exit 2
        ;;
    esac

     

     

     

    带双引号的"$*" 和 "$@“ 区别

     

    #fearch 循环
    for
    j in '\' '|' '/' '-' do printf "%c 已完成 [%-${LENGTH}s] %d/%d. " "$j" "$MASK" "$SUCCEEDED" "$LENGTH"; sleep 0.5 done ----------------------------
    #for 循环
    list=() STEP=3 for((i=0; i < ${#list[@]}; i+=STEP)) do .... done

     

     shell 编程 | shift 命令用法笔记

     

    while :
      do
        case "$1" in
          -h | --help)
            usage
            exit 0
            ;;
          -v | --version)    
            VERSION="$2"
            shift 2   
            ;;
          --debug)
            ENABLE_DEBUG=1
            shift
            ;;
          --) shift; break ;;
          *) echo "Unexpected option: $1 - this should not happen."
            usage 
            exit 2
            ;;
        esac
      done

    read commitMessage
    read -p "    请按任意键退出!" -n 1

     

     

     

     

     

    # 日志相关
    function log_debug ()
    {
      if [ $ENABLE_DEBUG -eq 1 ];
      then
        DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
        USER_N=`whoami`
        echo "${DATE_N} ${USER_N} execute $0 [DEBUG] $@"
      fi
    }
    
    function log_info ()
    {
      DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
      USER_N=`whoami`
      echo "${DATE_N} ${USER_N} execute $0 [INFO] $@"
    }
    
    function log_error ()
    {
      DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
      USER_N=`whoami`
      echo -e "33[41;37m${DATE_N} ${USER_N} execute $0 [ERROR] $@ 33[0m"
    }

    log_info "清理所有资源."

  • 相关阅读:
    判断负环
    Max GEQ Sum (区间最大值>最大值的覆盖+区间和的最值问题>前缀和最值问题(l1,r)+是否合格,存在问题变化为最值问题)
    生物芯片 (大数据+打表找规律)(数论小知识)
    幂一矩阵 (矩阵找规律+最小公倍数)
    Log大侠 蓝桥杯(势能线段树)
    intergal test
    水群 题意转化建图+最短路 问题
    chino with c language (理解题意形模拟题)
    jmeter转义
    C# 常用类型互转总结
  • 原文地址:https://www.cnblogs.com/qiyebao/p/13749722.html
Copyright © 2020-2023  润新知