VerySource

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

帮我看看这道程序题目

[复制链接]

5

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-2-19 12:00:02 | 显示全部楼层 |阅读模式
写一个shell脚本,用文件夹路经作为输入,如果输入是空,就用当前目录作为输入。把这个目录中的后缀为.c 和.cpp的文件名打印出来,然后比较这些文件,如果存在具有相同内容的文件,就把他们的名字打印出来!
回复

使用道具 举报

0

主题

10

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-4-29 03:00:01 | 显示全部楼层
不算复杂的,你还是自己研究下吧
涉及问题有
1.脚本接收命令行参数
2.判断当前目录
3.遍历某指定类型文件
4.比较文件内容
5.脚本程序的循环
回复

使用道具 举报

5

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-5-5 19:15:01 | 显示全部楼层
我就是在循环那里不知道怎么弄,
回复

使用道具 举报

5

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-7-22 11:45:01 | 显示全部楼层
#!/bin/sh
function compare
{
if [ `cd $Dname` ]; then
            list=`ls  *.{.c,.cpp}`
        echo  "the result of  compare:"
        for  file  in  $list ;  do
             for  otherfile  in  $list ; do
                   if [ $file!=$otherfile ];  then
                        if [ ![ cmp $file $otherfile ] ]; then
                                echo "$file and $otherfile  have the same content"
                        fi
                   fi
             done
         done
}
                          
echo  "input  a directory name"
read  Dname
if [ $Dname!="" ]; then
compare
else   
$Dname="."   #use current directory as input
compare  
fi

#我这样写有错吗,我现在调了没有调试出来,哪位高手帮我看看!谢谢
回复

使用道具 举报

5

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-7-22 12:00:01 | 显示全部楼层
函数中少写了一个“fi”
回复

使用道具 举报

0

主题

10

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-7-22 17:15:01 | 显示全部楼层
if [ `cd $Dname` ]; then
list=`ls *.{.c,.cpp}`
fi
--------------------------
此外你的主程序部分可以调整一下,更优化
echo "input a directory name"
read Dname
if [ $Dname="" ]; then
$Dname="."
fi
compare
回复

使用道具 举报

0

主题

10

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-7-22 19:15:01 | 显示全部楼层
其实主程序这样可能更安全
echo "input a directory name"
read Dname
if [ -n $Dname ]; then
   if [ -d $Dname ]; then
     echo '输入参数不是有效目录'
     exit 1
   fi
else
     $Dname="."
fi
compare
------------------------------------------
一般目录参数的输入最好采用命令行参数的方式,这样更方便程序的相互调用。
在function compare定义的结果输出部分,最好把echo "the result of compare:"改成
echo "the result of compare in"`pwd`":"
回复

使用道具 举报

5

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-7-30 08:45:01 | 显示全部楼层
非常感谢!!
回复

使用道具 举报

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

本版积分规则

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

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