【发布时间】:2014-12-13 11:51:26
【问题描述】:
遇到这个问题,我可以寻求帮助....
创建一个 shell 脚本 fileType.sh,它接受一个命令行参数,一个文件路径(可能是相对的或绝对的)。脚本应检查该文件并打印由短语组成的单行
Windows ASCII
如果文件是带有 CR/LF 行终止符的 ASCII 文本文件,或者
其他的
如果文件是二进制文件或带有“Unix”LF 行终止符的 ASCII。
例如:
./fileType.sh ~cs252/Assignments/ftpAsst/d3.dat
Windows ASCII
./fileType.sh /bin/cat
其他的
./fileType.sh 文件类型.sh
其他的
./fileType.sh /usr/share/dict/words
其他的
当给定现有文件的合法路径时,您的脚本不应产生任何其他输出。 (如果给一个不存在的文件的路径不正确,它可能会产生任何你喜欢的东西。)
Unix 新手,我有一些 C++ 经验。
这就是我的脚本中的内容。
#!/bin/sh
grep -r 'Windows ASCII' $1
if $(file == "ASCII TEXT");then
echo Windows ASCII
else
echo Something Else
fi
这是我的输出:
./fileType.sh: 4: ./fileType.sh: [文件:未找到
其他的
#!/bin/sh
grep -r "Windows ASCII" $1
if test "$( file "$1")" = ' ASCII text, with CRFL line terminators'; then
echo Windows ASCII
else
echo Something else
fi
当我传入的文件应该给出 Windows ASCII 的输出时,我现在的输出只是别的东西......
【问题讨论】:
-
file是否产生前导空格?你最好做if file "$1" | grep -q "ASCII text"; then
标签: shell