for循环不能按预期使用ksh中的变量

时间:2013-01-10 11:33:17

标签: shell ksh

以下代码是打印/ home / user / dir / * @($ {host} | $ {hostname}) *,而不是打印目录中的每个文件。< / p>

#!/usr/bin/ksh

host=foo
hostname=bar 
config_path="/home/user/dir"

search=$config_path/*_@(${host}|${hostname})_*

for file in $search
do                    
  echo $file
done

如果我喜欢这个,它会起作用

#!/usr/bin/ksh

host=foo
hostname=bar 
config_path="/home/user/dir"

#search=$config_path/*_@(${host}|${hostname})_*

for file in $config_path/*_@(${host}|${hostname})_*
do                    
  echo $file
done

我有三个问题。

1)为什么在将模式分配给变量时返回字符串?

2)我在很多地方使用这种模式,所以最好给它分配一个变量。如何解决这个问题?

3)是否在较新版本的ksh中修复了?

我正在使用SunOS服务器5.10 Generic_147441-23 i86pc i386 i86pc并通过输入以下命令获得ksh版本。

$ set -o vi
$ Version M-11/16/88i

1 个答案:

答案 0 :(得分:3)

要解决此问题,您可以执行以下操作:

for file in $(eval echo $search)