我有一个脚本,它使用exec
命令重定向STDOUT
到STDERR
一个文件。该脚本在 Solaris 9 下运行良好。我正在 VMware 上的 Solaris 10 上对其进行测试,但它在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