ITPub博客

首页 > 应用开发 > IT综合 > shell中变量$#,$@,$0,$1,$2的含义

shell中变量$#,$@,$0,$1,$2的含义

IT综合 作者:kuqlan 时间:2011-08-08 11:50:22 0 删除 编辑
下边是一个简单的测试脚本,脚本内容如下:[@more@]

1
2
3
4
5
6
7
8
9
10
11
12
13
14


# cat test.sh
#!/bin/sh
echo "num:$#"
echo "shname:$0"
echo "first :$1"
echo "second:$2"
echo "arg:$@"
echo "all:$*"
echo "pid:$$"
echo "status:$?"
echo "lastname:$_"
echo "last_pid:$!"
echo "flag:$-"

保存退出

执行脚本

1
2
3
4
5
6
7
8
9
10
11
12
13


# sh test.sh one two three four
num:4
shname:test.sh
first :one
second:two
arg:one two three four
all:one two three four
pid:1222
status:0
lastname:/usr/bin/gnome-session
last_pid:
flag:

通过显示结果可以看到:

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$1是传递给该shell脚本的第一个参数

$2是传递给该shell脚本的第二个参数,以此类推,$3是第三个参数…

$@ 是传给脚本的所有参数的列表,但是每个参数都是一个独立的”"引用字串,这就意味着参数被完整地传递,并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的单词

$*与$@同义,但是所有的位置参数,被作为一个单词.

$$是脚本自身的进程ID.这个变量经常用来构造一个”unique”的临时文件名.

$?是命令,函数或者脚本本身的退出状态,用于检查上一个命令,函数或者脚本执行是否正确。(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错。)

$_是保存之前执行的命令的最后一个参数.这里是/usr/bin/gnome-session

$!是在后台运行的最后的工作的PID(进程ID),本例子中没有,所以为空

$-传递给脚本的falg(使用set 命令).这起初是ksh 的特征,后来被引进到Bash 中,但不幸的是,在Bash 中它看上去也不能可靠的工作.使用它的一个可能的方法就是让这个脚本进行自我测试(查看是否是交互的).—-这个来自网上,怎么使用有待确认

源文档 <http://www.dbasky.com/oracle/shell_parameter_num.html>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18841027/viewspace-1053586/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Crontab 的修改
请登录后发表评论 登录
全部评论
Oracle技术爱好者,Oracle10g OCM,网名 KUQLAN ,具有7的年Oracle数据库管理实践,曾经参加过BOSS、ERP、云计算(OpenStack+kvm)等项目的一线工作。以前写博客是为了自己,而现在是为了自己和别人。因为领会了帮助别人和分享、沉淀和积累会创造快乐和价值...

注册时间:2009-01-26

  • 博文量
    183
  • 访问量
    1681005