0
错误我发现下面我们老的脚本功能:问题有关KSH
f() { # < files list
typeset file
cat - > $TMPFILE # Bug in KSH
while read -r file
do
process $file
done < $TMPFILE
}
有谁知道在KSH这个bug?
错误我发现下面我们老的脚本功能:问题有关KSH
f() { # < files list
typeset file
cat - > $TMPFILE # Bug in KSH
while read -r file
do
process $file
done < $TMPFILE
}
有谁知道在KSH这个bug?
显然,f()是一个过滤功能,即你应该使用它在管道像这样
./generate_filelist.sh | f
在你期望read -r
读标准输入就好了,例如做
./generate_filelist.sh | while read -r file; do echo $file; done
时显然,有(是?)在(某些)KSH,阻止同样的从功能工作(版本(S))的错误:
f() {
typeset file
while read -r file # whoops not reading from stdin as it should?
do
process $file
done
}
我foun 2臭虫可能是它,这取决于主要是你的平台上:
有可能(很多)更多的历史错误可以应用,我停止搜索,因为我不知道任何关于您的平台,或实际上脚本的设计平台。
所以相反,有一种解决方法,将stdin写入临时文件并从中读取。需要注意的是
$$TMPFILE
,可能代替$TMPFILE
?)(除非有KSH的另一种特性我不知道的,$$
扩展到当前进程ID))。
f() {
typeset file
cat - > $TMPFILE
while read -r file
do
process $file
done < $TMPFILE
}
平台 - AIX。 –
在http://unix.stackexchange.com/上可能会做得更好 – Julian