#!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(my_fun "$@") echo 'the number of parameter in "$*" is '$(my_fun "$*") 执行:./my.sh p1 "p2 p3" p4后返回: the number of parameter in "$@" is 3 the number of parameter in "$*" is 1 $*表示所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2 $@表示所有这些参数都分别被双引号引住,若一个脚本接收到两个参数,$@等价于$1$2 $#表示提供给脚本的参数号这里怎么看出$*和$@的区别呢?为什么执行结果是3和1呢?这里$#又是什么意思呢?-------------------------------------------------------------------------------------------------------举例说: 脚本名称叫test.sh 入参三个: 1 2 3 运行test.sh 1 2 3后 $*为"1 2 3"(一起被引号包住) $@为"1" "2" "3"(分别被包住) $#为3(参数数量)------------------------------------------------------------------------------------------------------实例我们先写一个简单的脚本,执行以后再解释各个变量的意义# touch variable# vi variable脚本内容如下:#!/bin/shecho "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"
echo "show parm list:$*"
echo "show process id:$$"
echo "show precomm stat: $?"
保存退出赋予脚本执行权限# chmod +x variable执行脚本# ./variable aa bb (为什么在命令行使用./variable aa bb不行?只能使用sh variable.sh aa bb)number:2
scname:./variable
first:aa
second:bb
argume:aa bbshow parm list:aa bb
show process id:24544show precomm stat:0
通过显示结果可以看到:$# 是传给脚本的参数个数$0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个$$ 是脚本运行的当前进程ID号$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
shell脚本中的$*,$@和$#
最新推荐文章于 2023-07-25 11:15:00 发布