我正在完成一项两部分任务。首先,我们被要求创建一个名为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,它可以从命令行获取多个文件路径,并对每个文件路径执行相同的分析,打印包含文件名的行,冒号,空格,然后是第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
我从我的hw检查器得到的错误是:运行时失败:./ 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脚本中。现在改变一些事情,但这是我到目前为止的地方。
答案 0 :(得分:1)
您的主力工作人员缺少您要分析的文件名。
#!/bin/sh
for i in "$@"; do
echo $i":" "$(sh ./fileType.sh $i)"
done
HTH