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 

posted @ 2014-10-23 14:22  minxinfeng  阅读(322)  评论(0编辑  收藏  举报