将下面Shell 程序段中的空缺部分补齐,使得它可以将指定的一个或多个输入文件的内容依次添加到输出文件的末尾。如果指定的输出文件不存在,则程序应自动产生一个输出文件。
if ["$#"-It 2];then
echo "Usage $0<output-file><input file l>[<input file2>...]"
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
解析:
本题考查的是Shell 程序设计方面的基础知识。
程序的功能是指定一个或多个输入文件,将它们的内容依次添加到输出文件的末尾。如果指定的输出文件不存在,则程序应自动产生一个。本题命令行的格式应为:
concatenate-files.sh <输出文件><输入文件1>[<输入文件2>…]
第一个if 条件语句的条件段“$#"-It 2”的含义是位置参量的个数小于2,则显示提示信息并退出。
output="$1" 语句的含义是将第一个参数作为输出文件。shift 语句的含义是将位置参量左移。空(41)应填$@,表示所有位置参量,即相当于$1,$2,$3…。
由于试题要求将它们的内容依次添加到输出文件的末尾,对于UNIX 系统Shell 向用户提供了输入输出转向命令;可以在不改变应用程序本身的情况下自由地改变其数据的输入源和输出目的地。其中,“>”、“>>”表示输出转向,“<”表示输入转向。例如,cat 命令用来将输入文件的数据显示在屏幕上:
cat input. txt
上述cat命令将input.txt 文件中的内容输出到屏幕(标准输出设备)上。但是,如果我们将命令写成:
cat input. txt>output.txt
那么cat 命令就会将原本输出到屏幕上的内容输入到文件output.txt 中去并覆盖 output.txt 的内容。如果使用
cat input. txt>>output.txt
将input.txt 文件的内容添加到output.txt 文件的末尾。
通过上述分析,空(1)应填"$i">>$output。