• Shell之特殊变量


    一、特殊变量概述

    在shell中有两类特殊的变量,一类被称为位置变量,另一类被称为进程状态变量。下面列出位置变量和进程状态变量的具体内容:

    • 位置变量
    变量 描述
    $0 获取当前执行的shell脚本的文件名,包括脚本路径
    $n 获取当前执行的shell脚本的第n个参数值,n=1...9,如果n>9,使用括号扩起来$(10)
    $* 获取当前shell的所有参数,将所有的命令行参数当作单个字符串,相当于“$1$2$3...”
    $@ 获取程序的所有的参数,“$1” “$2”...
    $# 获取当前执行的shell脚本后面紧跟的参数个数
    • 进程状态变量
    变量 描述
    $$ 获取当前shell的进程号(PID)
    $! 执行上一个命令的PID
    $? 获取执行上一个指令的返回值(0为成功,非0为失败)
    $_ 在此之前执行的命令或脚本的最后一个参数

    二、位置变量

    1、$0

    [root@localhost project]# cat test.sh 
    echo $0
    [root@localhost project]# sh test.sh 
    test.sh
    
    [root@localhost project]# sh `pwd`/test.sh
    /project/test.sh

    2、$n

    [root@localhost project]# cat test.sh 
    echo $1
    [root@localhost project]# sh test.sh xiaoshen
    xiaoshen
    [root@localhost project]# sh test.sh xiaoshen xiaozhang
    xiaoshen
    [root@localhost project]# sh test.sh "xiaoshen xiaozhang"
    xiaoshen xiaozhang

    $1表示接收一个参数,加引号表示一个参数。

    3、$*

    [root@localhost project]# cat test.sh 
    echo $*
    
    [root@localhost project]# sh test.sh xiaoshen xiaozhang
    xiaoshen xiaozhang

    4、$@

    [root@localhost project]# cat test.sh 
    echo $@
    [root@localhost project]# sh test.sh xiaoshen xiaozhang
    xiaoshen xiaozhang

    5、$#

    [root@localhost project]# cat test.sh 
    echo $1
    echo $#
    
    [root@localhost project]# sh test.sh xiaoshen xiaozhang
    xiaoshen
    2

    三、进程状态变量

    1、$$ 

    [root@localhost project]# echo $$
    1973

      $$另一个应用是总是启动同一个脚本,如果该脚本已经启动,可以kill掉然后重启,可以先将该脚本运行后的pid存入到文本文件,如果再次运行该脚本,先去读取pid,kill掉重启。

    #!/bin/sh
    PID_PATH=/project/a.pid 
    if [ -f "$PID_PATH" ] 
       then
          kill -USER2 `cat $PID_PATH`>/dev/null 2>&1
          rm -f $PID_PATH
    fi
    echo $$>$PID_PATH
    sleep 200

    2、$?

    [root@localhost project]# echo $$
    1973
    [root@localhost project]# echo $?
    0
  • 相关阅读:
    ORA-02020 : 过多的数据库链接在使用中-Windows环境解决步骤
    <转载>c++中new一个二维数组
    C C++输出格式 <转载>仅用于个人
    *p 和p[i] 区别
    Const *ptr ptr
    C 格式化的输入输出(printf scanf)
    PP 各种快捷键
    【Java并发工具类】原子类
    【Java并发工具类】Java并发容器
    【Java并发工具类】CountDownLatch和CyclicBarrier
  • 原文地址:https://www.cnblogs.com/shenjianping/p/14269872.html
Copyright © 2020-2023  润新知