- 论坛徽章:
- 0
|
请大家出谋划策,多谢了!
....
- #!/bin/sh
- # 定义人名的最大长度
- NAMELEN=10
- # 子函数, 用来生成甘特图, 带四个参数 人名、起始日、项目天数、项目名称
- ganttbar() {
- NAME="$1"
- d=$2
- i=$3
- PROJ="$4"
- SBAR=`awk -v begin=$d -v dur=$i 'END {
- while ( x < dur ) {
- if ( begin % 7 == 0 ) begin++
- offset = 5 - begin % 7
- while ( ++y < begin ) printf " "
- printf "*"
- if ( (x-offset) % 5 == 0 ) printf "--"
- x++
- }
- }' < /dev/null | sed 's/--$//g'`
- TITLELEN=${#PROJ}
- BARLEN=${#SBAR}
- STARTPOS=`expr $d + \( $BARLEN - $TITLELEN - $d \) / 2 `
- SBAR=`printf "%${BARLEN}s" $SBAR | sed "{
- s/\(.\{$STARTPOS\}\)\(.\{$TITLELEN\}\)/\1$PROJ/
- }"`
- printf "%-${NAMELEN}s|$SBAR\n" "$NAME"
- }
- BAR="MTWTF--MTWTF--MTWTF--MTWTF--MTWTF--MTWTF"
- printf "%-${NAMELEN}s|$BAR\n" "NAME"
- # 调用子函数的几例
- ganttbar "Leader" 2 25 "Nothing to do"
- ganttbar "Pimkie" 3 10 "T1"
- ganttbar "James Bond" 5 15 "Task 2"
- ganttbar "Dora" 8 17 "H"
- # the 7th day is Sunday, it should be as same as above
- ganttbar "Monika" 7 17 "Task Three"
- ganttbar "Fanqiang" 18 11 "Admin"
复制代码
不知有否解决你的问题。 |
|