Shell 将输出重定向到屏幕而不是csv文件

Shell 将输出重定向到屏幕而不是csv文件,shell,unix,csv,while-loop,echo,Shell,Unix,Csv,While Loop,Echo,我正在运行一个shell脚本,它从文件中读取一些列并将其写入csv文件。就像从两个文件中汇编记录一样 #!/bin/ksh while read -r a1 a2 a3 && read -r b1 b2 b3 <&3; do echo $a2 $a3 $b1 $b2 done <account_info.csv 3<Error.csv > output.csv echo "extraction is done" #/bin/ksh 当re

我正在运行一个shell脚本,它从文件中读取一些列并将其写入csv文件。就像从两个文件中汇编记录一样

#!/bin/ksh

while read -r a1 a2 a3  && read -r b1 b2 b3  <&3; do
echo $a2 $a3 $b1 $b2
done <account_info.csv 3<Error.csv > output.csv
echo "extraction is done" 
#/bin/ksh
当read-r a1 a2 a3和read-r b1 b2 b3这个脚本工作时:

#!/bin/ksh
IFS=','
while read -r a1 a2 a3 && read -r b1 b2 b3 <&3
do
  echo "${a2},${a3},${b1},${b2}"
done < a.csv  3< b.csv > output.csv
echo 'extraction is done'
运行:

ksh:


没有理由将完成的消息提取写入文件。这是您的完整脚本吗?您是如何运行脚本的。像这样
/script.sh>output.csv
test.ksh是我正在运行的脚本的名称。我已经创建了一个.ksh文件并在putty中运行它。这件事发生了,我感到无助。你知道你正在从stdin读取a1、a2和a3,并从Error.csv读取“b”值,对吗?使用“ksh”,您应该能够使用“read-u3”,避免重定向,并且清楚地知道自己在做什么。无论如何,看起来您已经重定向了脚本的stdout,所以要么不要这样做,要么将echo重定向到/dev/tty。
$ cat a.csv
a1,a2,a3
$ cat b.csv
b1,b2,b3
$ ./test.ksh
extraction is done
$ cat output.csv
a2,a3,b1,b2
$ ksh --version
version         sh (AT&T Research) 93u+ 2012-02-29