我正在使用busybox,只有/ bin / sh可用。 我想了解是否将使用脚本处理的文件视为ASCII(只需读取并执行我需要做的事情)或gzip(因此先解压缩然后再做我需要做的事情)即可。
这里的“文件”命令是完美的,但是不幸的是它不可用,因此我不知道要调用哪个过程,因为我正在处理的输入文件可以是任何一种格式。
我想知道是否有一个简单的解决方法,在这里我找不到它了...
答案 0 :(得分:1)
您的问题中的隐含之处是您拥有一个gunzip
命令,并试图弄清楚是否需要调用它。
一个可以告诉您...的命令是gzip
。
contents_of_file() {
if gzip -t <"$file" >/dev/null 2>&1; then
gunzip -c <"$file"
else
cat <"$file"
fi
}
也就是说,您也可以询问grep
文件是否没有不可打印的非空白字符:
is_plain_text() {
if grep -q -e '[^[:graph:][:space:]]' <"$1"; then
echo "$1 has non-ASCII characters"
else
echo "$1 is plain text"
fi
}