所以我用谷歌搜索了这个并认为我找到了答案,但它仍然不适用于我。
该程序计算数字文件中行和列的平均值和中位数...
使用文件名有效:
./stats -columns test_file
使用cat不起作用
cat test_file | ./stats -columns
我不确定为什么它不起作用
#file name was given
if [[ $# -eq 2 ]]
then
fileName=$2
#file name was not given
elif [[ $# -eq 1 ]]
then
#file name comes from the user
fileName=/dev/stdin
#incorrect number of arguments
else
echo "Usage: stats {-rows|-cols} [file]" 1>&2
exit 1
fi
答案 0 :(得分:1)
一个接受管道输入的非常简单的程序:
#!/bin/sh
stdin(){
while IFS= read -r i
do printf "%s" "$i"
done
}
stdin
测试如下:
echo "This is piped output" | stdin
要将其放入类似于问题中的脚本/实用程序中,您可以执行此操作:
#!/bin/sh
stdin(){
while IFS= read -r i
do printf "%s" "$i"
done
}
rowbool=0
colbool=0
for i in $@
do case "$i" in
-rows) echo "rows set"
rowbool=1
shift
;;
-cols) echo "cols set"
colbool=1
shift
;;
esac
done
if [[ $# -gt 0 ]]
then
fileName=$1
fi
if [[ $# -eq 0 ]]
then fileName=$(stdin)
fi
echo "$fileName"