您的位置:首页 > 运维架构 > Shell

[Linux]:bash shell位置参数

2011-09-24 22:49 274 查看
$*和$@只有在被引号包裹时才有区别,比如
传进去的参数为 "abc bcd" "ddd"

"$*"="abc bcd ddd"

"$@"="abc bcd" "ddd"

转自:http://blog.sina.com.cn/s/blog_62c5db6e0100hpp8.html

可以使用varname=value的语句定义变量值。

例如:

wel="welcome to 小小子"

echo$wel

某些环境变量在登录时由shell预定义,还有其他三种内置变量对shell编程很重要,其实我感觉是非常重要。呵呵。

现在先简单的学一下,以后再系统的学(没办法,现在我没看到那,没法写那的东西啊,唉,不会的太多太多,一点点来吧)。

说到这,想起了 同事说过的一句话,同事问“最近学东西感觉咋样?”

我说,“还好吧,慢慢来吧,总不能一口吃个胖子不是。”

同事思索良久,后曰“慢慢可以,但是得‘来’啊!”。 :cool:

呵,扯远了,继续咱们的话题。。

最重要的特定内置变量称为位置参数。当脚本被调用时,它们保存脚本的命令行参数。

位置参数名为1,2,3等,其值由$1,$2,$3表示,还有一个位置参数0其值为脚本名(也就是要被调用的鍵入的命令)

两个特殊变量包含了所有的位置参数:*和@

它们的差别不大,但是,要注意哦,虽然其差别只能在双引号“”内才体现得出来。

$”是包含所有参数位置的单一字符串,看来老外真的很喜欢钱,尤其是“美元”。

由环境变量IFS(内部域分隔符,internal field seperator)中的第一个字符分隔。其默认为“空格”、“TAB”和NEWLINE。

$@等价于”$1″”$2″”$3″…”$N”,这里的N是位置参数数目,等价于N个单独的由空格分隔的双绰号字符串。

如果没有位置参数(即一个参数也没有),则“$@“扩展为空。

变量#保存位置参数的数目

假设有下列简单的shell脚本alice.sh

#!/bin/bash

echo"alice: $@"

echo"$0: $1 $2 $3 $4"

echo"$# arguments"

假如我鍵入命令/alice.sh welcome 小小子(这里welcome和小小子就是alice脚本的两个参数)

执行结果为:

alice: welcome 小小子

./alice.sh: welcome 小小子

2 arguments

这里$3和$4未设置,将把其换成空字符串(挺可怜的吧? :cool: )

声明: 本文采用
BY-NC-SA 协议进行授权 | 小小子

转载请注明转自《bash shell位置参数

转自:http://www.xiaoxiaozi.com/2009/05/11/409/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: