所以这是我到目前为止的代码(IM新打坏,所以我知道这可能是凌乱):庆典 - 在直方图剧情脚本getopts的参数错误
#!/bin/bash
while getopts ":cs:p:" opt; do
case $opt in
c)COUNT="hello";;
s)NUM=$OPTARG;;
p)CHAR="$OPTARG";;
\?) exit 1;;
esac
done
shift $((OPTIND - 1))
while read number value; do
printf "%3d " $number
if [ ! -z $COUNT ]; then
printf "%5d " $value
fi
if [ $NUM ]; then
for i in $(seq 1 {$value/$NUM}); do
if [ ! -z $CHAR ]; then
printf "%s" $CHAR
else
printf "#"
fi
done
else
for i in $(seq 1 $value); do
if [ ! -z $CHAR ]; then
printf "%s" $CHAR
else
printf "#"
fi
done
fi
printf "\n"
done <${1:-/dev/stdin}
那么这段代码是在线路发生输入格式为{行长度,发生次数}或{x,y},脚本将使用行长和'#'字符的直方图绘制数据。
第一个问题:
我的getopts的工作正常,除了“-s NUM”,在它正试图通过$ NUM(输入号码进行分割,分割$值时,输出错误通过)。这应该会减少使用NUM作为标量打印的#个字符的数量。 我可以运行命令“./histoplot -c -p'$'textfile.txt”完全没问题,它做它需要做的事情。但是当我运行“./histoplot -s 3 textfile.txt”时,它输出错误:seq:无效的浮点参数:'{x/y}
我该怎么做才能使其正常工作?
第二个问题:
与含有输入文件所以:
3 4
4 1
5 3
10 1
输出应(对命令 “./histoplot -c [或任何其他选项] [inputfile中]” :?
1 0
2 0
3 4 ####
4 1 #
5 3 ###
6 0
7 0
8 0
9 0
10 1 #
但是我的输出不包含哪里有0出现 任何想法长度
在此先感谢帮助球员,我真的很感激!
编辑:
的第一个问题已经解决了,刚刚离开第二个问题。任何人有任何想法? :)
此外,由$ value/$ NUM确定的数字需要向下舍入,所以如果它相当于4.57,则打印的字符数将是4. – Swallows