|
发表于 2004-12-15 15:02:02
|
显示全部楼层
我误解小锁兄弟的意思了,sorry
小锁兄弟的意思是对于一个字符串sdfsd "sdf sdfsdf",把它传递给一个命令作为参数,这样,这个命令的参数就是有两个.
这个问题的解决办法我想可以这样:
关于shell的特性:对于一条命令行,只对其进行一次解析.
也就是说,shell对一条命令行的程序名,参数等的分割只是一次,下面是我的测试:
- $AA="hello "he llo ""
- $echo $AA
- hello "he llo "
- $echo `echo $AA`
- hello "he llo "
复制代码
若要对于两次解析,可以用shell内建的eval对命令行再次解析如下:- $eval echo `echo $AA`
- hello he llo
复制代码
上面两次解析之后,对变量$AA中的引号也去掉了,实际把$AA解析成了两个参数.再回到小锁兄弟提出的问题上来,代码如下:
- #!/bin/bash
- a="hello hi " hel""
- function fd()
- {
- echo $#
- echo $@
- }
- fd "$a"
复制代码
输出变成了: |
|