单选题 在UNIX操作系统中,以下Shell程序实现当用户键入的命令参数的个数为1时,执行cat$1命令;若用户键入的命令参数的个数为2时,执行cat>>$2<$1命令。
case (36) in
1) cat $1;;
2) cat>>$2<$1;;
*) echo ‘default...’
esac

【正确答案】 C
【答案解析】[要点解析] 在UNIX操作系统中,Shell变量分为参数变量和状态变量两类,其各自常见的变量见表7-4。
表7-4 Shell定义变量
Shell参数变量
Shell状态变量
 $0  命令名,可用它获得调用该程序的名字  $?  上一个命令的返回代码,如果命令执行成功则返回真值,否则返回假值
 $1,$2……  表示Shell程序的位置参数  $$  表示当前命令的进程标识数
 $#  表示位置参数的个数,不包括命令名  $1  表示Shell执行的最近后台进程标识数
 $*  表示所有位置参量,即相当于$1,$2,$3  $-  表示Shell标志位组成的字符申,可以由Shell传递来,或由set命令设置
 $@  与$*基本相同,但当用双引号转义时,“$@”还是能分解成多个参数,但“$*”则合并成一个参数
注意到试题中“用户键入的命令参数的个数”关键信息,查表7-4可知,(36)空缺处所填写的内容是“$#”。
本试题中使用case语句实现编程中多选一的控制结构。cat命令用于查看文件内容,从键盘读取数据,合并文件等。格式:cat[-b][-A][E][-T][-n)[-s][-v]文件名。例如,“$cat -n file”命令将显示出file文件中的行号。