Linux-特殊环境变量

101 阅读1分钟

特殊环境变量

$n

语法

$n

例子

[lanyan@lanyan]$ touch lanyan.sh
[lanyan@lanyan]$ vim lanyan.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
[lanyan@lanyan]$ chmod 777 lanyan.sh
[lanyan@lanyan]$ ./lanyan.sh kkhb xzbbq
==========$n==========
./lanyan.sh
kkhb
xzbbq

$#

语法

$#

例子

[lanyan@lanyan]$ vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
[lanyan@lanyan]$ chmod 777 lanyan.sh
[lanyan@lanyan]$ ./lanyan.sh kkhb xzbbq
==========$n==========
./lanyan.sh
kkhb
xzbbq
==========$#==========
2

$*

语法

$*

例子

[lanyan@lanyan]$ vim lanyan.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
echo '==========$*=========='
echo $*
[lanyan@lanyan]$ ./lanyan.sh a b c d e f g
==========$n==========
./lanyan.sh
a
b
==========$#==========
7
==========$*==========
a b c d e f g

$@

语法

$@

例子

[lanyan@lanyan]$ vim lanyan.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
echo '==========$*=========='
echo $*
echo '==========$@=========='
echo $@
[lanyan@lanyan]$ ./lanyan.sh a b c d e f g
==========$n==========
./lanyan.sh
a
b
==========$#==========
7
==========$*==========
a b c d e f g
==========$@==========
a b c d e f g

$?

语法

$?

例子

查看脚本的返回值

[lanyan@lanyan]$ ./helloworld.sh
hello world
[lanyan@lanyan]$ echo $?
0

  1. $n
    1. n 为数字
    2. $0 代表该脚本名称
    3. 11-9 代表第一到第九个参数
    4. 十以上的参数,十以上的参数需要用大括号包含,如${10}
  2. $#
    1. 获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性
  3. $*
    1. 这个变量代表命令行中所有的参数
    2. $*把所有的参数看成一个整体
    3. 不可以做循环操作,看作一个值
  4. $@
    1. 这个变量也代表命令行中所有的参数
    2. 不过$@把每个参数区分对待
    3. 可以做循环操作,因为他把所有参数看作一个数组
  5. $?
    1. 最后一次执行的命令的返回状态。
      1. 如果这个变量的值为 0,证明上一个命令正确执行;
      2. 如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明 上一个命令执行不正确了。
  6. nn、#、*、@都与输入值相关$?完全是一个对返回值验证的一个环境变量

最后不知道什么情况nn、#、*、@中的$显示不出来,就这样吧

image.png