我正在做一个分为两部分的作业。首先,我们被要求创建一个名为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脚本中。现在正在改变某些东西,但这是我到目前为止的工作。
您的主力军缺少您要分析的文件名。
#!/bin/sh
for i in "$@"; do
echo $i":" "$(sh ./fileType.sh $i)"
done
高温超导
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句