当前位置:Linux教程 - Linux综合 - shell参数问题,linux

shell参数问题,linux

  有程序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里把#替换成空格不是很简单么?

(出处:http://www.sheup.com)