初学者Unix Shell脚本问题

用户4058875

我正在做一个分为两部分的作业。首先,我们被要求创建一个名为fileType.sh的shell脚本,该脚本可以判断文件是“ Windows ASCII”类型还是“其他”。我已经完成了这一部分,并在下面显示了一个示例。

./fileType.sh ~cs252/Assignments/ftpAsst/d3.dat
 Windows ASCII
 ./fileType.sh /bin/cat
 Something else
 ./fileType.sh fileType.sh
 Something else 
 ./fileType.sh /usr/share/dict/words
 Something else

它有效,这是fileType.sh脚本的代码

#!/bin/sh                                                                       
file="$1"
case $(file "$file") in
    *"ASCII text, with CRLF line terminators" )
        echo "Windows ASCII"
    ;;
    * )
        echo "Something else"
    ;;
esac

此任务的第二部分希望我们:在同一目录中,编写脚本checkFiles.sh,该脚本可以从命令行获取多个文件路径,并对每个脚本执行相同的分析,并打印包含文件名和冒号的行。 ,一个空格,然后是Stage 1的两个输出字符串之一,用于命令行中的每个文件。

例如,

./checkFiles.sh /usr/share/dict/words fileType.sh /home/cs252/Assignments/ftpAsst/d3.dat
/usr/share/dict/words: Something else
fileType.sh: Something else
/home/cs252/Assignments/ftpAsst/d3.dat: Windows ASCII 

这是我编写的checkFiles.sh脚本。

#!/bin/sh                                                                     
for i  in "$@"; do

    echo $i":" "`sh ./fileType.sh`" 

done

这是我运行它时的输出。

./checkFiles.sh /usr/share/dict/words fileType.sh /home/cs252/Assignments/ftpAsst/d3.dat
/usr/share/dict/words: Something else
fileType.sh: Something else
/home/cs252/Assignments/ftpAsst/d3.dat: Something else

我从硬件检查器得到的错误是:运行时失败:./checkFiles.sh'aardvark.cpp''bongo.dat''cat.dog.bak'。我将测试一个.ccp和.bak,看它是否炸毁了我的程序或其他东西。还有其他人有什么想法吗?我已经为此工作了一段时间,任何帮助都会很棒。谢谢!

更新:好的,因此在重新运行此命令后,我得到:

./checkFiles.sh /home/cs252/Assignments/ftpAsst/d3.dat
/home/cs252/Assignments/ftpAsst/d3.dat: Something else

但这是不对的!而不是说“其他”,而应该说“ Windows ASCII”。问题出在我的checkFiles.sh脚本中。现在正在改变某些东西,但这是我到目前为止的工作。

Dinesh

您的主力军缺少您要分析的文件名。

#!/bin/sh
for i  in "$@"; do
    echo $i":" "$(sh ./fileType.sh $i)"
done

高温超导

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章