特殊变量(位置参数变量)

介绍

  1. 执行一个shell脚本时,希望从命令行获取参数信息,就可以使用位置参数变量
  2. 例如:./myshell 100 200,这就是shell命令行,可以在myshell脚本中获取到参数100 200 的信息

基本语法

  1. $n (n为数字,$0代表命令本身,$1-9代表第一到第九个参数,十以上的参数需要使用大括号包含${10})
  2. $* (这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
  3. $@ (这个变量代表命令行中所有的参数,不过$@把每个参数区分对待)
  4. $# (这个变量代表命令行中的所有参数个数)

实例

#创建一个position.sh脚本,在脚本中获取到命令行的各个参数信息
#! bin/bash

echo '特殊变量$0 $1 $2...的作用'
echo '结果:' $0 $1 $2

echo '特殊变量$#的作用'
echo '结果':$#

echo '特殊变量$*的作用'
echo '结果':$*

echo '特殊变量$@的作用'
echo '结果':$@


# 执行结果
[root@localhost shell]# bash var.sh 1 2 3 4 5 6
特殊变量$0 $1 $2...的作用
结果: var.sh 1 2
特殊变量$#的作用
结果:6
特殊变量$*的作用
结果:1 2 3 4 5 6
特殊变量$@的作用
结果:1 2 3 4 5 6

$* 和$@ 的区别

$* 和$@ 的区别
$* 和 $@ 都表示传递给函数或脚本的所有参数
当$*和$@ 不被双引号" " 包围时,他们之间没有任何区别,都是将接受到的每个参数看作一份数据批次之间以空格来分割

但是当他们被双引号" "包含时,就会有区别了:
"$*" 会将所有的参数从整体上看做一份数据,而不是把每个参数看做一份数据
"1 2 3 4 5 6"

"$@" 任然将每个参数都看作一份数据,彼此之间时独立的
"1"
"2" 
"3"
"4"
"5"
"6"
posted @ 2022-05-07 09:55  savagee  阅读(81)  评论(0)    收藏  举报