• shell中$0,$?,$!等的特殊用法


    变量说明:
    $$
    Shell本身的PID(ProcessID)
    $!
    Shell最后运行的后台Process的PID
    $?
    最后运行的命令的结束代码(返回值)
    $-
    使用Set命令设定的Flag一览
    $*
    所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
    $@
    所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
    $#
    添加到Shell的参数个数
    $0
    Shell本身的文件名
    $1~$n
    添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

    示例:
    我们先写一个简单的脚本,执行以后再解释各个变量的意义
    # touch variable
    # vi variable
    脚本内容如下:
    #!/bin/sh
    echo "args number:$#"
    echo "script name:$0"
    echo "first arg:$1"
    echo "second arg:$2"
    echo "args:$@"


    保存退出


    赋予脚本执行权限
    # chmod +x variable


    执行脚本
    # ./variable aa bb
    args number:2
    script name:./variable
    first arg: aa
    second arg: bb
    args:aa bb


    通过显示结果可以看到:
    $# 是传给脚本的参数个数
    $0 是脚本本身的名字
    $1 是传递给该shell脚本的第一个参数
    $2 是传递给该shell脚本的第二个参数
    $@ 是传给脚本的所有参数的列表

    $()在bash中叫做 命令替换,回调用一个subshell。通俗点讲,就是被它括起来的命令部分将优先执行。

    $(command)命令替换,和`command`是同样的作用

    #Examples:
    #  basename /usr/bin/sort       Output "sort".
    #  basename include/stdio.h .h  Output "stdio".
    #Examples:
    #  dirname /usr/bin/sort  Output "/usr/bin".
    #  dirname stdio.h        Output ".".


    NAME=$(basename $VCF .vcf.gz)
    DIR=$(dirname $VCF)

  • 相关阅读:
    Jmeter简单教程
    SpringMVC @RequestBody请求参数在postman中的请求
    maven多环境部署
    idea中项目文件颜色含义
    本地Consumer和Producer无法使用远程Kafka服务器的处理办法
    CentOS7 64位下MySQL5.7安装与配置(YUM)
    git学习笔记
    Nginx的启动、重启、关闭命令
    Mysql update 错误
    spring框架源码编译
  • 原文地址:https://www.cnblogs.com/emanlee/p/4319248.html
Copyright © 2020-2023  润新知