码迷,mamicode.com
首页 > 系统相关 > 详细

shell系统$的含义

时间:2020-03-11 17:03:07      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:语句   接收   please   ast   ensure   author   plain   没有   parameter   

#!/bin/bash #Author:Sparrow #Name:explain_shell_parameters #Date 2020-3-11 #Description: #Explain what $0 $1 $2 $3 $4 $@ $* $# mean #Program begin #Ensure enter six parameters at least if [ $# -le 6 ];then echo "Please enter 6 parameters at least!" exit 1 fi #Echo every $ echo "\$0 --------- $0" echo "\$1 --------- $1" echo "\$2 --------- $2" echo "\$3 --------- $3" echo "\$4 --------- $4" echo "\$5 --------- $5" echo "\$6 --------- $6" echo "\$7 --------- $7" echo "\$8 --------- $8" echo "\$# --------- $#" echo "\$@ --------- $@" echo "\$* --------- $*" echo "\$? --------- $?"

l输出结果

sh explain_shell_parameters.sh 1 2 3 4 5 6 7 8

#结果
#$0即脚本名
$0  ---------  explain_shell_parameters.sh 
$1  ---------  1 
$2  ---------  2 
$3  ---------  3 
$4  ---------  4 
$5  ---------  5 
$6  ---------  6 
$7  ---------  7 
$8  ---------  8 
$#  ---------  8 
$@  ---------1 2 3 4 5 6 7 8 
$*  ---------  1 2 3 4 5 6 7 8
#上一条语句的执行结果
$?  ---------  0

$* 和 $@ 的区别

 当 $* 和 $@ 不被双引号 " "包围时,它们之间没有任何区别,
 都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。
 但是当它们被双引号" "包含时,就会有区别了:

"$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。
"$@"仍然将每个参数都看作一份数据,彼此之间是独立的。

比如传递了 5 个参数,那么对于"$*"来说,
这 5 个参数会合并到一起形成一份数据,它们之间是无法分割的;

而对于"$@"来说,这 5 个参数是相互独立的,
它们是 5 份数据。
如果使用 echo 直接输出"$*"和"$@"做对比,是看不出区别的;
但如果使用 for 循环来逐个输出数据,立即就能看出区别来。

shell系统$的含义

标签:语句   接收   please   ast   ensure   author   plain   没有   parameter   

原文地址:https://blog.51cto.com/14316149/2477276

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!