首页 > 试题广场 >

请将下面所示的shell程序的空缺部分补齐

[单选题]
在UNIX操作系统中,若用户键入的命令参数的个数为1时,执行cat$1命令:若用户键入的命令个数为2时,执行cat>>$2<$1命令,请将下面所示的shell程序的空缺部分补齐
case () in
    1)cat $1;;
    2)cat>>$2<$1;;
    *)echo 'defult...';;
esac
  • $#
  • $@
  • $$
  • $*
A  题意是根据参数个数执行对应的case语句
$#:参数个数
$$:当前shell的PID进程ID
$@和$*均表示所有参数,形式有所不同。$@:"$1" "$2" … "$n"; $*: "$1 $2 … $n"。
发表于 2015-12-30 10:00:41 回复(1)
更多回答

【解析】本题考查了UNIX操作系统中Shell程序设计方面的相关知识。
在UNIX中,$$、$@、$#以及$*的含义分别如下:
$$表示当前命令的进程标识数。
$*表示所有位置参量,例如$1、$2等。
$@与$*类似,但当用双引号进行转义时,"$@"能够分解多个参数,而"$*"合并成一个参数。
$#包括位置参数的个数,但是不包括命令名。
发表于 2015-11-17 17:33:18 回复(0)
$$表示当前命令的进程标识数。
$*表示所有位置参量,例如$1、$2等。
$@与$*类似,但当用双引号进行转义时,"$@"能够分解多个参数,而"$*"合并成一个参数。
$#包括位置参数的个数,但是不包括命令名
发表于 2017-06-08 20:48:56 回复(0)
$#:参数个数
$$:当前shell的PID进程ID
$@和$*均表示所有参数,形式有所不同。
发表于 2018-04-10 13:52:06 回复(0)
#!/bin/sh
case $# in
1) echo $1;;
2) echo $1 $2;;
*) echo 'default...';;
esac
分号呢????,最后一行应该是esac

发表于 2016-08-13 16:06:51 回复(2)
在UNIX中
$$ 表示当前命令的进程标识数
$*表示所有位置参量,
$@与$*类似,不同处在于$@:"$1" "$2" … "$n"; $*: "$1 $2 … $n"。
$# 参数个数
发表于 2018-09-10 16:41:16 回复(0)
注意这里的题目要求为:用户键入的命令参数的个数为
所以为$#
发表于 2017-01-08 17:48:25 回复(0)
【解析】本题考查了UNIX操作系统中Shell程序设计方面的相关知识。 在UNIX中,$$、$@、$#以及$*的含义分别如下: $$表示当前命令的进程标识数。 $*表示所有位置参量,例如$1、$2等。 $@与$*类似,但当用双引号进行转义时,"$@"能够分解多个参数,而"$*"合并成一个参数。 $#包括位置参数的个数,但是不包括命令名。
发表于 2016-09-16 19:43:04 回复(0)