bash里参数分割的问题(附送gmail:))
假设有如下两个bash脚本
#### test.sh ######
#!/bin/sh
SAVED_ARGS="$@"
./sub_test.sh $SAVED_ARGS
#### sub_test.sh #######
#!/bin/sh
while [ $# != 0 ]; do
echo $1;
shift;
done
如果执行脚本
./test.sh "a b"
"a b" 会被解释称两个参数传递给脚本sub_test.sh, 这样打印结果为:
a
b
如果不用IFS的话有什么办法可以使"a b"当作一个参数传递给sub_test.sh,这样执行结果应该为:
a b
(我有有限几个gmail invitation,感兴趣的朋友可以留个mail)
问题点数:0、回复次数:10Top
1 楼laughable(Iv)回复于 2004-09-03 14:13:13 得分 0
./test.sh "a b"
是 a b 啊Top
2 楼laughable(Iv)回复于 2004-09-03 14:14:04 得分 0
搞错了
我以为是
./sub_test.sh “a b”Top
3 楼wipall(太阳当空照)回复于 2004-09-03 14:21:11 得分 0
呵呵,可以再想想 :)Top
4 楼laughable(Iv)回复于 2004-09-03 14:21:56 得分 0
#### test.sh ######
#!/bin/sh
SAVED_ARGS="$@"
./sub_test.sh $SAVED_ARGS -----> ./sub_test.sh "$SAVED_ARGS"
这样就可以了
Top
5 楼laughable(Iv)回复于 2004-09-03 14:27:26 得分 0
呵呵
原来是有奖竞答啊!Top
6 楼wipall(太阳当空照)回复于 2004-09-03 14:31:40 得分 0
这样的话所有从test.sh传递进来的参数都会被认做一个参数。
比如:./test.sh a "b c"
根据你的方法,打印的会是:
a b c
但是我需要这种情况也能处理,应该作为两个参数传人sub_test.sh
理想的输出是:
a
b c
有什么好主意吗?
Top
7 楼wipall(太阳当空照)回复于 2004-09-03 14:33:45 得分 0
呵呵,指gmail吗?
需要的话就留下email
有回答最好了,没有也无防。 :)Top
8 楼laughable(Iv)回复于 2004-09-03 17:04:51 得分 0
#### test.sh ######
while [ $# != 0 ]
do
./sub_test.sh "$1"
shift
done
这样好罗嗦啊,还不如直接./sub_test.sh "a b" c
在找早资料Top
9 楼laughable(Iv)回复于 2004-09-03 17:09:00 得分 0
我的emall
laughable@163.comTop
10 楼see22(小海)回复于 2004-09-04 13:55:54 得分 0
#### test.sh ######
#!/bin/sh
##SAVED_ARGS="$@" 删掉这一行
./sub_test.sh "$@"
#### sub_test.sh #######
#!/bin/sh
while [ $# != 0 ]; do
echo $1;
shift;
done
这样就没有问题了Top




