• Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数


    Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    [root@12crac1 scripts]# echo $$
    2221
    表示当前shell进程的id,即pid
    $0 当前脚本的文件名
    $n 传递给脚本或函数的参数,n是一个数字,表示第几个参数,$1 第一个参数,$2第二个参数
    $# 传递给脚本或参数个数
    $* 传递给脚本或参数的所有参数
    $@ 传递给脚本或参数的所有参数,被双引号(" ")包含时,与$*有所不同
    $? 上个命令的退出状态,或函数的返回值
    $$ 当前shell的进程id,或函数的返回值

    测试脚本

    [root@12crac1 scripts]# /bin/sh test_para.sh abc yyy
    File Name: test_para.sh
    First Parameter : abc
    First Parameter : yyy
    Quoted Values: abc yyy
    Quoted Values: abc yyy
    Total Number of Parameters : 2
    [root@12crac1 scripts]# more test_para.sh 
    #!/bin/bash
    echo "File Name: $0"
    echo "First Parameter : $1"
    echo "First Parameter : $2"
    echo "Quoted Values: $@"
    echo "Quoted Values: $*"
    echo "Total Number of Parameters : $#"

    $*$@ 的区别

    $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数
    但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

    [root@12crac1 scripts]# /bin/sh test_para1.sh "a" "b" "c" "d"
    $*= a b c d
    "$*"= a b c d
    $@= a b c d
    "$@"= a b c d
    print each param from $*
    a
    b
    c
    d
    print each param from $@
    a
    b
    c
    d
    print each param from "$*"
    a b c d
    print each param from "$@"
    a
    b
    c
    d
    [root@12crac1 scripts]# more test_para1.sh 
    #!/bin/bash
    echo "$*=" $*
    echo ""$*"=" "$*"
    echo "$@=" $@
    echo ""$@"=" "$@"
    echo "print each param from $*"
    for var in $*
    do
        echo "$var"
    done
    echo "print each param from $@"
    for var in $@
    do
        echo "$var"
    done
    echo "print each param from "$*""
    for var in "$*"
    do
        echo "$var"
    done
    echo "print each param from "$@""
    for var in "$@"
    do
        echo "$var"
    done

    退出状态

    $? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
    退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。
    $? 也可以表示函数的返回值
    [root@12crac1 scripts]# echo $?
    0

    Shell替换:Shell变量替换,命令替换,转义字符

    [root@12crac1 scripts]# /bin/sh test_s1.sh 
    Value of a is 10 
    [root@12crac1 scripts]# more test_s1.sh 
    #!/bin/bash
    a=10
    echo -e "Value of a is $a 
    "
    这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出
    \ 反斜杠
    a 警报,响铃
     退格 删除键
    f 换页(FF),将当前位置移到下页开头
    
     换行
    
     回车
    	 水平制表符(tab键)
    v 垂直制表符
    可以使用echo 命令的-E禁止转义,默认不转义
  • 相关阅读:
    npm安装一直报错Error: Cannot find module 'lru-cache'
    vue使用ref获取元素
    WinForm 简易仿360界面控件
    【解决方案】macOS 打开微信视频电话其他应用音量变小问题
    ES服务的搭建(八)
    ES安装
    缓存一致性问题(七)
    多级缓存架构(六)
    掌握SKU和SPU关系及表设计(三)
    架构的搭建(一)
  • 原文地址:https://www.cnblogs.com/yhq1314/p/13572856.html
Copyright © 2020-2023  润新知