linux中预留的$变量

$0表示bash脚本的文件名
$1表示第一个参数
$*表示参数列表$0, $1, $2…
$@表示"$1"/"$2"...每个变量都是独立的,用双引号括起来
$#表示参数列表个数
$?表示上一条命令的执行结果
$!表示上一条命令的PID号
 
注意:
不被引用的$*每个单词被当成独立的单词
使用"$*"整个参数列表被当成一个参数
不引用的#@与$*一样
"$@"保留调用者的假设,引号内的作为一个参数,且保留空格
 
下面的脚本代码来对$*和$@来进行相应的测试
 1 #!/bin/bash
 2 
 3 # The differences between $* $@ "$*" "$@"
 4 
 5 echo Dollar star is $* # 空格未保留
 6 echo "Dollar star in double quotes is $*" # 引号内的空格被保留
 7 echo Dollar at is $@ # 空格未保留
 8 echo "Dollar at in double quotes is $@" #引号的空格被保留
 9 
10 echo
11 echo "Looping through Dollar Star" # 不引用$* 每个单词被当成独立的单词
12 for i in $*
13 do
14         echo "Parameter is $i"
15 done
16 
17 echo
18 echo "Looping through Dollar Star with double quotes" # 使用"$*"整个参数列表被当成一个参数
19 for i in "$*"
20 do
21         echo "Parameter is $i"
22 done
23 
24 echo
25 echo "Looping through Dollar At" # 不引用的#@与$*一样
26 for i in $@
27 do
28         echo "Parameter is $i"
29 done
30 
31 echo
32 echo "Looping through Dollar At in double quotes" # "$@"保留调用者的假设,引号内的作为一个参数,且保留空格
33 for i in "$@"
34 do
35         echo "Parameter is $i"
36 done

运行命令:

bash 01defaultParam.sh  "hello world" two

执行结果:

Dollar star is hello world two
Dollar star in double quotes is hello world two
Dollar at is hello world two
Dollar at in double quotes is hello world two
 
Looping through Dollar Star
Parameter is hello
Parameter is world
Parameter is two
 
Looping through Dollar Star with double quotes
Parameter is hello world two
 
Looping through Dollar At
Parameter is hello
Parameter is world
Parameter is two
 
Looping through Dollar At in double quotes
Parameter is hello world
Parameter is two

对应新浪博客地址:http://blog.sina.com.cn/s/blog_6941438f0102v8qj.html 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。