帮忙给写3个shell程序

hehe11111111 2007-01-05 03:55:21
1. 编写一个SHELL程序,接受2—15范围内的一个数作为参数,在标准输出设备上用+号,-号和竖杠(|)画出以给定的参数值为边的正方形。如果命令行中参数数目不对或数值超出范围,显示相应的错误信息。

+————+
| |
| |
+————+
2. 编写一个SHELL程序,使它只接受一个命令行参数,利用该参数输入一个目录,计算该目录下(不包括子目录)所有文本文件的总行数。
如:某个目录下有三个文本文件文件1.txt,2.txt,3.txt, 分别是3行,20行,19行.那么统计结果应该是42行。
如果命令行参数输入的是文件,则显示错误信息。

3. 编写一个SHELL程序,实现查看指定用户是否登录到系统上,如果已登录,显示“xxx用户已登录”并返回0,否则在该用户登录时显示“xxx用户现在登录到系统中”并返回1。
...全文
381 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LexChen 2007-02-14
  • 打赏
  • 举报
回复
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


执行的时候可以将其放到后台
LexChen 2007-02-14
  • 打赏
  • 举报
回复
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"
LexChen 2007-02-14
  • 打赏
  • 举报
回复
50分少了点吧,呵呵
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
footway 2007-02-13
  • 打赏
  • 举报
回复
顶一下,要不沉了...
joyself 2007-01-09
  • 打赏
  • 举报
回复
作业?
icecy 2007-01-09
  • 打赏
  • 举报
回复
現在先關注一下,呵呵
正在學習中~!

23,218

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧