コマンドを使用してファイルexec
にリダイレクトするスクリプトがあります。スクリプトは Solaris 9 で正常に動作します。VMware 上の Solaris 10 でテストしていますが、コマンドで失敗します。STDOUT
STDERR
exec
prog=`basename $0`
log="${LOCLOG}/${prog}$$"
if test -z "$LDDEBUG"
then
exec > ${log} 2>&1
chmod 644 "${log}"
else
set -x
fi
上記では、スクリプトはエラー メッセージなしでその行で終了します。
variable を引用符で囲みましexec > "${log}" 2>&1
た。これにより、スクリプトは最後まで実行されましたが、ログ ファイルは作成されませんでした。
次に、ファイルパスで試しました:
exec > /tmp/blahblah1 2>&1
...そしてそれはうまくいきました。ファイルを作成して書き込みました。しかし、スクリプトでログ ファイル名を生成する必要があるため、これで問題は解決しません。
ここで解決策を見つけられず、おそらく非常に単純であることはわかっていますが、スクリプトに大きな変更を加えることなく、他に行うことは考えられません。
====== の出力sh -x
ld-test@lunar-tst[60] sh -x /home/hameed/test/local/bin/qikload
+ basename /home/hameed/test/local/bin/qikload
prog=qikload
datefmt=+%H:%M:%S
dayfmt=+%y%m%d
log=/home/hameed/test/local/etc/log/0508/qikload2199
+ test -z
+ exec
=======
次に、を削除し2>&1
て実行するsh -x
と、その行を通過しました。
+ basename /home/hameed/test/local/bin/qikload
prog=qikload
datefmt=+%H:%M:%S
dayfmt=+%y%m%d
log=/home/hameed/test/local/etc/log/0508/qikload27213
+ test -z
+ exec
+ chmod 644 /home/hameed/test/local/etc/log/0508/qikload27213
+ date +%H:%M:%S
now=10:44:23
+ echo Log: 10:44:23 Commencing loads