曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5751|回复: 1
打印 上一主题 下一主题

[概念] $*

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2008-12-28 03:55:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
$*
A list of all the parameters, in a single varible, separated by the first character in the environment variable IFS. If IFS is modified,
then the way $* separates the command line into parameters will change.

在一个变量中列出所有参数,这些参数并以环境变量 IFS 的第一个字符进行分隔。如果 IFS 改变,那么分隔的方式也会改变。
IFS=:
set foo bar bam
echo "$*"
结果输出:foo:bar:bam

注意,若对 IFS 设置成如 :::::: ,尽管此时 IFS 的值已经为 :::::,但在 echo "$*" 也只是取出 IFS 值中的第一个字符,即 : 进行参数的分隔。

尝试改变一下 IFS 变量,然后看其输出:
IFS=~~
echo "$*"
输出结果:foo~bar~bam

释放 IFS ,可使用命令: unset IFS

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
沙发
 楼主| 发表于 2009-1-14 15:00:10 | 只看该作者

参数应用举例

代码:
#!/bin/bash

salutation="hello"
echo $salutation

echo "程序 $0 正在运行"
echo "第2个参数是: $1"
echo "第3个参数是: $2"
echo "参数列表为 $* "

echo ""
echo "修改一下 IFS 变量(分隔符用 : 号来显示)"
IFS=':'
echo ""

echo "第2个参数是: $1"
echo "第3个参数是: $2"
echo "参数列表为 $* "
echo "\\$@ 的输出:$@"
echo ""

echo -n "Please enter a new greeting:"
read salutation
echo $salutation
echo "The script is now complete"
exit 0

运行结果如下
[beyes@localhost shell]$ ./parameter-envar.sh -p1 -p2 -p3
hello
程序 ./parameter-envar.sh 正在运行
第2个参数是: -p1
第3个参数是: -p2
参数列表为 -p1 -p2 -p3

修改一下 IFS 变量(分隔符用 : 号来显示)

第2个参数是: -p1
第3个参数是: -p2
参数列表为 -p1:-p2:-p3
$@ 的输出:-p1 -p2 -p3        #这里仍然以空格分开
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-14 18:53 , Processed in 0.088197 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表