VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 941|回复: 3

帮忙给写3个shell程序

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-13 22:00:02 | 显示全部楼层 |阅读模式
1. 编写一个SHELL程序,接受2—15范围内的一个数作为参数,在标准输出设备上用+号,-号和竖杠(|)画出以给定的参数值为边的正方形。如果命令行中参数数目不对或数值超出范围,显示相应的错误信息。   
   
  +————+      
  |         |   
  |         |   
  +————+
2. 编写一个SHELL程序,使它只接受一个命令行参数,利用该参数输入一个目录,计算该目录下(不包括子目录)所有文本文件的总行数。
如:某个目录下有三个文本文件文件1.txt,2.txt,3.txt, 分别是3行,20行,19行.那么统计结果应该是42行。
如果命令行参数输入的是文件,则显示错误信息。

3. 编写一个SHELL程序,实现查看指定用户是否登录到系统上,如果已登录,显示“xxx用户已登录”并返回0,否则在该用户登录时显示“xxx用户现在登录到系统中”并返回1。
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-19 17:45:01 | 显示全部楼层
1.
echo "请输入一个数字\c"
read size
len=`expr $size : ".*"`
result=0
if [ $len = 1 ]
then
  result=`expr $size : "[2-9]"`
elif [ $len = 2 ]
then
  result=`expr $size : "1[0-5]"`
fi
[ $result = 0 ] && {
  echo 输入的数字必须在2~15之间
  exit 1
}
let size=size-2
head='+'
line='|'
i=$size
sp=' '
while [ "$i" -ne "0" ]
do
  head="${head}-"
  line="${line} "
  let i=i-1
done
head="$head+"
line="$line|"
echo $head
while [ "$size" -ne "0" ]
do
  echo "$line"
  let size=size-1
done
echo $head
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-19 18:00:01 | 显示全部楼层
2.
([ $# = 0 ] || [ ! -d $1 ]) && {
  echo 请输入一个目录
  exit 1
}
lines=0
for fn in `ls $1/*.txt 2>/dev/null`
do
  line=`wc -l $fn|cut -c1-8`
  let lines=lines+line
done
echo "所有文本文件行数:$lines"
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-19 18:15:02 | 显示全部楼层
3.
[ $# = 0 ] && {
  echo 请输入一个用户名
  exit 1
}
logins=`who|grep "^$1 "|wc -l|cut -c1-8`
[ "$longins" -gt "0" ] && {
   echo "$1用户已登陆"
   exit 0
}
while [ "$logins" -eq "0" ]
do
   logins=`who|grep "^$1 "|wc -l|cut -c1-8`
done
echo "$1用户现在已登陆到系统中"
exit 1


执行的时候可以将其放到后台
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表