zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    72. Edit Distance
    583. Delete Operation for Two Strings
    582. Kill Process
    indexDB基本用法
    浏览器的渲染原理
    js实现txt/excel文件下载
    git 常用命令
    nginx进入 配置目录时
  • 原文地址:https://www.cnblogs.com/shenjianping/p/14269872.html
Copyright © 2011-2022 走看看