问题 单项选择题

在Linux操作系统中,若用户键入的命令参数的个数为1时,执行cat $ 1命令;若用户键入的命令参数的个数为2时,执行cat>>$2<$1命令。请将下面所示的Shell程序的空缺部分补齐。
case (48) in
1)cat $1;;
2)cat>>$2<$1;;
*)echo'default...'
esac

A.$ $
B.$ @
C.$ #
D.$ *

答案

参考答案:C

解析:在Linux操作系统中,Shell变量分为参数变量和状态变量两类,见表6-27。
表6-27 Shell 变 量

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

选择题
选择题