Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1500131
  • 博文数量: 297
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3082
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 11:36
文章分类

全部博文(297)

文章存档

2011年(1)

2009年(45)

2008年(67)

2007年(184)

我的朋友

分类: LINUX

2007-10-23 10:48:26

记下来,不会后悔d ...... =^=
 
$!  代表最后执行的后台命令的PID
$?  记录着最后退出的状态
$#  记录着传入的参数个数
$@  为所有参数列表,不受IFS控掉
$*  所有参数列表 受IFS控制
$$  进程标识号
$-  使用set及执行时传递给shell的标志位
$0  为程序名称
$1  为第一个参数
$2  为第二个参数,以下类推
PS1 为提示符,可进行设置 PS1="[\u@\h \W]\$"
PS2 为换行时的那个符号如 aa '换行后默认会出现>我们可以进行修改 PS2=''换成你喜欢的
IFS 为变量的分隔符,默认是空格
 
继续补充ing ......
 

e.g.

编辑如下test.sh脚本

#!/bin/bash

echo $0

echo $*

echo $@

echo $#

echo $$

ls -a /home

echo $_

terminal窗口中执行:

xk@linux:~/work> ./test.sh -a -b -c /home

./test.sh

-a -b -c /home

-a -b -c /home

4

3250

. .. fy jodier sky xk zhj

/home

xk@linux:~/work>echo $?

0

xk@linux:~/work>echo $!


xk@linux:~/work> ls -a /home &

[1] 3302

xk@linux:~/work> . .. fy jodier sky xk zhj


[1]+ Done /bin/ls $LS_OPTIONS -a /home

xk@linux:~/work> echo $!

3302

xk@linux:~/work>

为了区别$*$@编写如下test.sh脚本:

#!/bin/bash

function testargs

{

      echo "$# args"

}

testargs "$*"

testargs "$@"

unset -f testargs

terminal窗口中执行:

xk@linux:~/work> ./test.sh -a -b /home

1 args

3 args

xk@linux:~/work>

这里有一个很有意思的问题,如果test.sh为如下的内容:

#!/bin/bash

function testargs

{

echo "$# args"

}

testargs $*

testargs $@

unset -f testargs

再次执行有:

xk@linux:~/work> ./test.sh -a -b /home

3 args

3 args

xk@linux:~/work>

呵呵,这个问题稍后的文章会有解释。

另,这些特殊的shell变量可以和perl中类似的变量作比较,不同哦!:)

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