Linux shll中的$符号 -- 读取命令行参数

文件名test.sh

USER=nihao
echo "hello $USER"
#$0 脚本名
echo "script name is : `basename $0`"
#$1 第一个变量名
echo "first param is : $1"
#$* 所有变量
echo "all params are : $*"
#$# 变量长度
echo "params' length is : $# "
#$@ 所有变量
echo "all params are : '$@'"
#$$ 当前脚本进程
echo "process id of this script is : $$"
#$? exit 退出状态
echo "exit status is : $?"
#$! 最后一个守护进程pid,last daemon process (&) process id
echo "last daemon process id is : $!" 

 输出结果:

[admin@v035114 shuohai]$ ./test.sh a b c
hello nihao
script name is : test.sh
first param is : a
all params are : a b c
params' length is : 3 
all params are : 'a b c'
process id of this script is : 10837
exit status is : 0
last daemon process id is : 


选择第一个参数、最后一个、倒数第二个、从第二个连续的几个参数

[admin@arch036088.sqa.cm4 ~]$ cat test.sh 
#all params 全部参数
echo $@
#all params  全部参数
echo $*
#length of params 参数的长度
echo $#
#first param 第一个参数
echo $1
#last param 最后一个参数
echo ${@:${#@}}
#last 2 param 最后两个参数
echo ${@:${#@}-1}
#last 2nd param 倒数第二个参数
echo ${@:${#@}-1:1}
#from 2nd to last param 从第二个到最后一个参数
echo ${@:2}
#from 2nd, count 2 从第2个参数开始,连续2个参数
echo ${@:2:2}

输出结果

12 23 43 3 34
12 23 43 3 34
5
12
34
3 34
3
23 43 3 34
23 43

读取最后一个参数另一种方法 ${$#} 但是大括号中不能使用美元$符号,要用! 代替

[admin@v035114 shuohai]$ cat ./test.sh 
echo ${!#}
[admin@v035114 shuohai]$ ./test.sh 12 34 4 5 
5

遍历所有参数的另一种方法

[admin@v035114 shuohai]$ cat ./test.sh       
INDEX=1 
for param in $@
do
 
     echo $INDEX "--" $param                                                           
     INDEX=$[ $INDEX+1 ]
done

INDEX=1
for param in $*
do
        echo $INDEX "--" $param
        INDEX=$[ $INDEX+1 ]
done
[admin@v035114 shuohai]$ ./test.sh 12 34 4 5 
1 -- 12
2 -- 34
3 -- 4
4 -- 5
1 -- 12
2 -- 34
3 -- 4
4 -- 5


只打印第2个到第4个参数,一共5个参数

[admin@v035114 shuohai]$ cat param.sh 
INDEX=1 
for param in $@
do
        if [ $INDEX -ge 2 ] && [ $INDEX -le 4 ]; then
                echo $INDEX "--" $param
        fi
        INDEX=$[ $INDEX+1 ]
done

[admin@v035114 shuohai]$ ./param.sh 12 34 4 5
2 -- 34
3 -- 4
4 -- 5

访问第10个参数之后,不能直接使用$10访问了,要使用大括号

[admin@v035114 shuohai]$ cat test.sh 
echo $*
echo $11    #错误的方式
echo $[ ${10} ]
echo $[ ${11} ]
[admin@v035114 shuohai]$ ./test.sh 12 34 4 5 5 6 7 8 9 10 11
12 34 4 5 5 6 7 8 9 10 11
121  
10
11



 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值