于 2013年03月22日 10:17, Eric Blake 写道:
On 03/21/2013 07:33 PM, Zhang Xiaohe wrote:
> 于 2013年03月21日 21:08, Eric Blake 写道:
>> On 03/21/2013 04:20 AM, Daniel P. Berrange wrote:
>>
>> In other words, if we're going to do this, go all the way and use
>> wordexp() to get shell-like expansion, instead of reinventing it
>> ourselves. Except that wordexp() is not portable to mingw, and not
>> provided in gnulib.
>>
>>>
>>> Also, we'll need a way to escape the special meaning of '~'
>>> and '$' to get them treated as literal characters instead of
>>> special characters.
>>
>> We already have the ability to quote characters, so that we can embed
>> spaces; our quoting rules are (intentionally) copied on shell rules, so
>> they would still work with a wordexp() approach.
>>
> This seems better than just expanding $HOME, i will try this wordexp().
> One question, is variable can be accepted in the position of command
> and option? That is, is this form
> virsh # $VAR --$OPT=~/rpmbuild
> could be valid?
wordexp() is not portable to mingw, and not provided by gnulib. If you
try to use wordexp(), you will basically be re-writing a big chunk of
/bin/sh. At this point, I'm not sure it's worth the complexity.
Interactive virsh does not need to be a full-blown shell. From the
command line, you already have the shell parsing things before handing
it to virsh.
Originally, I think '~' and '$HOME' is most commonly used, so it
should
be acceptable to just expand these.
But now I'm confused. You said
if we're going to do this, go all the way
and
Interactive virsh does not need to be a full-blown shell.
I'm not sure but are you suggesting that "no need to add this
expansion" ?