shell参数问题,linux

王朝system·作者佚名  2008-05-18
宽屏版  字体: |||超大  

有程序aaaa 参数为 --add "aa bb"

现需要将所有参数用变量代替程序如下:

temp="--add "aa bb""

aaaa $temp

提示参数出错bb"

手工执行aaaa --add "aa bb" 可以

需要这么转换???

to houf2000:

很明显,你的程序aaaa需要两个参数,一个是--add($1) 一个是aa bb ($2)

因为aa bb中间含空格,shell会解释成两个参数,所以加""

而你使用替换的时候,shell对命令行的解释工作便只作了变量替换,你的程序便获得了

三个参数:--add($1) ,"aa ($2) ,bb"($3

个人认为,一个好的程序在考虑用户输入的时候,应该具体些.

比如说:考虑三个参数

或考虑使用特殊字符间隔两个参数,如

aaaa --add aa#bb

非常感谢斑竹,可我的程序比较特殊,可能输入多组参数:例如;

aaaa --add "aa bb" --add "cc dd" --add "ff"

因为参数不确定,总需要得到一个参数字符串,而对这个串进行

操作时就会出现斑竹所说的认为多参数的情况,用“ 的目的就是这个,

没有别的办法在参数中带有空格吗?望指教

在参数间加空格是一个问题,而shell运行变量替代是另一个问题.

如果单纯是加空格,用" " 和都可以.

而要让shell做完变量替换在做一次对""和的处理便做不到了.

通常在其它情况下我们用eval,在这好像也不适用啊.

如果你有aaaa的源码,还是把它改了吧.在c里把#替换成空格不是很简单么?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有