我需要帮助转置一个仅包含行列数字的文件。由于无法使用awk shell或perl,因此使其变得有些困难。我已经花了几个小时在这上面,但是无法正确地运行它。我尝试了一些其他方法,但现在只有这个。它可以运行,但不会输出任何内容,这让我得出结论,我的代码中可能有问题。如果您不知道什么是转置,它就是将文件:
1 2 3
4 5 6
如果这样做,它将打印出
1 4
2 5
3 6
以下是我的代码:
if [ $# -gt 2 ]
then
echo"System error">&2
exit 1
elif [[ $# -eq 2 && -e "$2" && -r "$2" ]]
then
while read -a line; do
for ((i=0; i < "${#line[@]}"; i++)); do
a[$i]="${a[$i]} ${line[$i]}"
done
done < $2
for ((i=0; i < ${#a[@]}; i++)); do
echo ${a[i]}
done
fi
$# -gt 2
条件需要在echo
和消息之间加一个空格)。你是如何运行它的(以及你传递了什么参数)? - Gordon Davissonset -x
,这样你就可以看到它运行时发生了什么。 - Gordon Davissonecho "system failure"
-- 尝试带空格和不带空格两种方式,并比较结果。 - Gordon Davisson