【发布时间】:2023-04-30 06:51:02
【问题描述】:
这是我的 Unix 作业,我需要编写一个脚本,在日历中显示今天的日期,这是我的代码和输出。我的教授给了我评分,反馈说“修复命令中有一个错误”。我似乎无法弄清楚这个错误。任何帮助都会很棒!
命令是 $c5/n*/4*/s*/today
这些只是一些目录,而今天是我的文件名。当我输入该命令时,我看到了我想查看的脚本的输出,那么我的命令中怎么会有错误。
#!/usr/dt/bin/dtksh
date
if [ $# -ge 1 ] ; then
exec $HOME/bin/cal $*
fi
#highlight today on this months calendar
daynumber=`date +%d`
#tput gets terminal specific characters, e.g. clear
rmso=`tput rmso` # get the chars for reverse video for this
smso=`tput smso` # terminal using tput
if [ $daynumber -lt 10 ] ; then
daynumber=" `echo $daynumber | sed 's/^0//`"
# daynumber=" `echo $daynumber | cut -c 2`"
fi
if cal | grep "$daynumber\$" > /dev/null; then
cal | sed "2,$ s/$daynumber/$smso$daynumber$rmso /"
else
cal | sed "2,$ s/$daynumber /$smso$daynumber$rmso /"
fi
输出... 30 将突出显示,因为那是今天的日期。
Sun Mar 30 14:22:31 CDT 2014
March 2014
S M Tu W Th F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
**30** 31
【问题讨论】:
-
不只是一个错误。
$*和"$@"是非常不同的东西,你几乎肯定想要后者。 -
...此外,还有更有效的方法可以消除前导零。
daynumber=${daynumber%0}比分叉、启动管道、等待它退出等快得多,很多。 -
daynumber=...sed...行中缺少单引号。 -
他实际上说你的命令有错误。不是我的脚本
-
你为什么不问问他他是什么意思?