将下面Shell程序段中的空缺部分补齐,使得它可以将指定的一个或多个输入文件的内容依次添加到输出文件的末尾,如果指定的输出文件不存在,则程序应自动产生一个输出文件。

if ["$#”-1t 2];then

echo "usage $0<output-file><input file 1>  [<input file 2>…]”

exit 0

fi

output="$1"

shift

for i in 1._____ ;do

if [-e"$i"];then # or use´-a $i´

cat 2.______

fi

done

单选题

1._____

A.$#

B.$i

C.$!

D.$@

【正确答案】 D
【答案解析】
单选题

2._____

A."$i">$output

B."$i">>$output

C.$i>$output

D.$i>>$output

【正确答案】 B
【答案解析】该Shell程序段中第一个if条件语句的条件段“"$#"-1t2’‘的含义是位置参量的个数小于2,则显示提示信息并退出。

语句output="$1"的含义是将第一个参数作为输出文件。

语句shift的含义是将位置参量左移。

由于该Shell程序段的功能是指定一个或多个输入文件,将它们的内容依次添加到输出文件的末尾。因此,(1)空缺处应填“$@”,表示所有位置参量,即相当于$1,$2,$3…。

对于UNⅨ系统Shell向用户提供了输入输出转向命令,可以在不改变应用程序本身的情况下自由地改变其数据的输入源和输出目的地。其中,与”、”>>”表示输出转向,”<”表示输入转向。例如,使用cat input.txt命令将输入文件的数据显示在屏幕(标准输出设备)上。而对于cat input.txt>output.txt命令就会将原本输出到屏幕上的内容输入到文件output.txt中去并覆盖原output.txt文件的内容。如果使用cat input.txt>>output.txt命令则将input.txt文件的内容添加到output.txt文件的末尾。

本试题要求:“如果指定的输出文件不存在,则程序应自动产生一个输出文件”,则需使用cat "$i">>$output命令。因此,(2)空缺处的正确答案是选项B。