1

次のコードは、ディレクトリ内の各ファイルを出力する代わりに、/home/user/dir/* @(${host}|${hostname}) * を出力しています。

#!/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

3つ質問があります。

1)パターンが変数に割り当てられているときに文字列を返すのはなぜですか?

2) 私はこのパターンを非常に多くの場所で使用しているので、変数に割り当てる方がよいでしょう。これを修正する方法は?

3) ksh の新しいバージョンでは修正されていますか?

SunOS サーバー 5.10 Generic_147441-23 i86pc i386 i86pc を使用しており、次のコマンドを入力して ksh バージョンを取得しました。

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

1 に答える 1

3

これを修正するには、次のようにします。

for file in $(eval echo $search)
于 2013-01-10T11:51:25.757 に答える