Chinaunix首页 | 论坛 | 博客
  • 博客访问: 185134
  • 博文数量: 36
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 445
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-26 10:26
文章分类

全部博文(36)

文章存档

2010年(3)

2009年(18)

2008年(15)

我的朋友

分类:

2009-11-06 14:27:56

$#和$0代表什么意思
 

$#: 命令行参数的个数
$0: script 本身的名字 

Special Parameters
       The  shell  treats  several parameters specially.  These parameters may
       only be referenced; assignment to them is not allowed.
       *      Expands to the positional parameters, starting from  one.   When
              the  expansion occurs within double quotes, it expands to a sin-
              gle word with the value of each parameter separated by the first
              character of the IFS special variable.  That is, "$*" is equiva-
              lent to "$1c$2c...", where c is the first character of the value
              of  the IFS variable.  If IFS is unset, the parameters are sepa-
              rated by spaces.  If IFS is  null,  the  parameters  are  joined
              without intervening separators.
       @      Expands  to  the positional parameters, starting from one.  When
              the  expansion  occurs  within  double  quotes,  each  parameter
              expands to a separate word.  That is, "$@" is equivalent to "$1"
              "$2" ...  If the double-quoted expansion occurs within  a  word,
              the  expansion  of the first parameter is joined with the begin-
              ning part of the original word, and the expansion  of  the  last
              parameter  is  joined  with  the last part of the original word.
              When there are no positional parameters, "$@" and $@  expand  to
              nothing (i.e., they are removed).
       #      Expands to the number of positional parameters in decimal.
       ?      Expands  to  the status of the most recently executed foreground
              pipeline.
       -      Expands to the current option flags as  specified  upon  invoca-
              tion,  by  the  set  builtin  command, or those set by the shell
              itself (such as the -i option).
       $      Expands to the process ID of the shell.  In a  ()  subshell,  it
              expands  to  the  process  ID of the current shell, not the sub-
              shell.
       !      Expands to the process ID of the most  recently  executed  back-
              ground (asynchronous) command.
       0      Expands  to  the name of the shell or shell script.  This is set
              at shell initialization.  If bash is invoked with a file of com-
              mands,  $0  is set to the name of that file.  If bash is started
              with the -c option, then $0 is set to the first  argument  after
              the  string to be executed, if one is present.  Otherwise, it is
              set to the file name used to invoke bash, as given  by  argument
              zero.
       _      At  shell  startup,  set to the absolute pathname used to invoke
              the shell or shell script being executed as passed in the  envi-
              ronment  or  argument  list.   Subsequently, expands to the last
              argument to the previous command, after expansion.  Also set  to
              the  full  pathname  used  to  invoke  each command executed and
              placed in the environment exported to that command.  When check-
              ing  mail,  this  parameter holds the name of the mail file cur-
              rently being checked.

 

测试结果:

在/test/目录下建文件test.sh

#!/usr/bin/ksh
appname=`basename $0`
echo $appname

执行:chmod u+x test.sh

# pwd
/test
# ./test.sh
test.sh
# /test/test.sh
test.sh
# sh /test/test.sh
test.sh

 

阅读(4698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~