zoukankan      html  css  js  c++  java
  • shell脚本中$!、$@、$#、$$、$0、$1、$2、$*的含义

    一、shell脚本中$!、$@、$#、$$、$0、$1、$2、$*的含义

    $! :Shell最后运行的后台Process的PID(后台运行的最后一个进程的进程ID号)

    $#:添加到shell当中参数的个数

    $$:Shell本身的PID(ProcessID,即脚本运行的当前进程ID号)

    $0:脚本本身的文件名

    $1:传到Shell当中的第一个参数

    $2:传到Shell当中的第二个参数

    $*:所有参数列表。如$*用" "括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个;若不加" ",那么$*与$@的输出结果相同

    $@:所有参数列表。如$@用" "括起来的情况、以"$1" 、"$2"、 … "$n" 的形式输出所有参数。

    脚本举例:

    echo "number:" $#
    echo "PID:" $$
    echo "sname:" $0
    echo "first:" $1
    echo "second:" $2
    echo $@  
    echo $*  
     
    echo ""
    echo "=========="
    n=1
    for i in "$@"
    do
      echo "$n : " $i
      let n+=1
    done
     
    echo ""
    echo "=========="
    n=1
    for i in "$*"
    do
      echo "$n : " $i
      let n+=1
    done
     
    echo ""
    echo "=========="
    n=1
    for i in $*
    do
      echo "$n : " $i
      let n+=1
    done

    结果:

    # ./value.sh 1 2 3 4
    number: 4
    PID: 5445
    sname: ./value.sh
    first: 1
    second: 2
    1 2 3 4
    1 2 3 4

    ==========
    1 : 1
    2 : 2
    3 : 3
    4 : 4

    ==========
    1 : 1 2 3 4

    ==========
    1 : 1
    2 : 2
    3 : 3
    4 : 4

    分析:

    $#:传给脚本的参数个数

    $$:脚本自己的PID号

    $0:脚本自身的名字

    $1 ~ $n:参数1 ~ 参数n

    $@与$*的区别:

      $@与$*都可以使用一个变量来来表示所有的参数内容,但这两个变量之间有一些不同之处。

      $@:将输入的所有参数作为一个列表对象

      $*:将输入的所有参数作为一个变量

    在上面的例子中,使用$@与$*是,都是用双引号引起来,但当$*不使用双引号时,结果与$@的结果相同。

    二、关于$? 

    $?:获取函数的返回值或者上一个命令的退出状态 。如果成功就是0,失败为1。

     在脚本中,我们常用if [ $? -eq 0 ] 来判断一个命令有没有执行成功。

    示例: 

    ps -fe | grep test | grep -v grep
    if [ $? -eq 0 ]
    then
        echo "Process test is running!"
    else
        echo "Process test don not run!"
    fi

     注意,if后面的中括号[  $? -eq 0 ],括号的两边各需要有一个空格。

    原文:https://blog.csdn.net/csdnxmj/article/details/103978774

  • 相关阅读:
    js 时间相关函数
    javascript面向对象:继承、多态
    面向对象相关
    reset.css css重置公共样式
    开通博客园第一天。
    vue 和 react 路由跳转和传参
    前端密码加密方式
    react组件回顶部
    移动端使用rem方法
    用rekit创建react项目
  • 原文地址:https://www.cnblogs.com/soymilk2019/p/14978480.html
Copyright © 2011-2022 走看看