2013-01-10 67 views
0

下面的一段代碼是打印/ home/user/dir/* @($ {host} | $ {hostname}) *而不是打印每個文件在目錄中。for循環無法按預期方式與ksh中的變量一起工作

#!/usr/bin/ksh 

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

search=$config_path/*[email protected](${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/*[email protected](${host}|${hostname})_* 

for file in $config_path/*[email protected](${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 

回答

2

爲了解決這個問題,你可以這樣做:

for file in $(eval echo $search) 
+0

感謝大師它的工作... –

相關問題