以下代码是打印/ 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
答案 0 :(得分:3)
要解决此问题,您可以执行以下操作:
for file in $(eval echo $search)