我正在尝试从init脚本执行hadoop作业并输出到日志文件。命令如下
log_file="/home/hadoop/log_`date +%Y%m%d-%H:%M:%S`.log"
echo $log_file
su - hadoop -c 'java -jar /home/hadoop/testing.jar > $log_file'
但我一直在-bash: $log_file: ambiguous redirect
。
我的陈述有什么问题?
答案 0 :(得分:3)
问题是您在命令周围使用单引号,因此变量$log_file
未被扩展。
正如William Pursell's comment所阐明的那样,$log_file
正在被扩展但是由错误的shell扩展。请参阅此示例(我使用set -x
来显示正在评估的命令):
$ log_file="/dir/file.log"
$ set -x
$ su - -c 'set -x; echo $log_file'
+ su - -c 'set -x; echo $log_file' # no expansion of $log_file yet
+ echo # expansion here, no variable $log_file
$ su - -c "set -x; echo $log_file"
+ su - -c 'set -x; echo /dir/file.log' # expansion here, $log_file exists
+ echo /dir/file.log
/dir/file.log
请尝试使用双引号,以便在正确的位置展开$log_file
:
su - hadoop -c "java -jar /home/hadoop/testing.jar > $log_file"