【发布时间】:2018-09-28 14:06:18
【问题描述】:
我有一个转置矩阵的程序。将文件作为参数传递时它可以正常工作,但是当通过stdin 给出输入时它会给出奇怪的输出。
这行得通:
$ cat m1
1 2 3 4
5 6 7 8
$ ./matrix transpose m1
1 5
2 6
3 7
4 8
这不是:
$ cat m1 | ./matrix transpose
5
[newline]
[newline]
[newline]
这是我用来转置矩阵的代码:
function transpose {
# Set file to be argument 1 or stdin
FILE="${1:-/dev/stdin}"
if [[ $# -gt 1 ]]; then
print_stderr "Too many arguments. Exiting."
exit 1
elif ! [[ -r $FILE ]]; then
print_stderr "File not found. Exiting."
exit 1
else
col=1
read -r line < $FILE
for num in $line; do
cut -f$col $FILE | tr '\n' '\t'
((col++))
echo
done
exit 0
fi
}
这段代码处理参数传递:
# Main
COMMAND=$1
if func_exists $COMMAND; then
$COMMAND "${@:2}"
else
print_stderr "Command \"$COMMAND\" not found. Exiting."
exit 1
fi
我知道this answer,但我不知道我哪里出错了。有什么想法吗?
【问题讨论】: