首页 文章

如何在while循环中重定向stderr和stdout

提问于
浏览
0

我有一个循环设置来搜索数据文件,并使用数据文件的每一行作为参数执行命令 . PUBLISH参数可以有空格,这就是为什么我有不同的转义 . 我希望能够将循环的每次迭代输出stderr和stdout到另一个日志文件:

while read VARIABLE1 PUBLISH LOGFILENAME
do
/home/script_name  -switch $VARIABLE1 -switch2 \"$PUBLISH\" >> /log/$LOGFILENAME 2>&1
done < $INPUTFILE

要创建的日志文件LOOKS - 也就是说 - 当我执行ll并且它看起来有大小时我可以看到它 - 但是当我尝试捕获文件时 - 我得到:

# ll logfile
-rw-r--r-- 1 root root     3205 2014-10-15 12:52 logfile
# pg logfile 
pg: logfile: No such file or directory 
# cat logfile 
cat: logfile: No such file or directory 
# read -r logfile 
^C (ctrl-c'd after no display) 
# file logfile 
logfile: ERROR: cannot open `logfile' (No such file or directory)

命令运行正常 - 但我无法创建日志文件 . 如果我删除重定向字符串(>> / log / $ LOGFILENAME 2>&1) - COMMAND输出就好了 . 我正在执行脚本并以root身份读取日志文件 - 因此权限不应成为问题 .

1 回答

  • 0

    感谢上午谁让我走上正轨我将输出文件名更改为硬编码名称并且它有效 - 我能够看到日志文件并将其分页 . 我回去查看原始的$ INPUTFILE,发现LOGFILENAME变量中的变量名后面有一个SPACE .

相关问题