曲径通幽论坛

标题: $* [打印本页]

作者: beyes    时间: 2008-12-28 03:55
标题: $*
$*
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
作者: beyes    时间: 2009-1-14 15:00
标题: 参数应用举例
代码:
#!/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        #这里仍然以空格分开





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2