Lia*_*iam 19 unix bash shell gzip
我有一个shell脚本,如果文件是压缩的(以.gz结尾),我需要执行一个命令,如果不是,则需要执行另一个命令.我不确定如何处理这个,这里是我正在寻找的概述:
file=/path/name*
if [ CHECK FOR .gz ]
then echo "this file is zipped"
else echo "this file is not zipped"
fi
Run Code Online (Sandbox Code Playgroud)
ric*_*ici 41
你可以使用一个简单的正则表达式,=~
在[[...]]
测试中使用运算符:
if [[ $file =~ \.gz$ ]];
Run Code Online (Sandbox Code Playgroud)
如果扩展名是.tgz
,如果你关心的话,这将不会给你正确的答案.但它很容易修复:
if [[ $file =~ \.t?gz$ ]];
Run Code Online (Sandbox Code Playgroud)
正则表达式周围没有引号是必要且重要的.你可以引用,$file
但没有意义.
使用该file
实用程序可能会更好:
$ file --mime-type something.gz
something.gz: application/x-gzip
Run Code Online (Sandbox Code Playgroud)
就像是:
if file --mime-type "$file" | grep -q gzip$; then
echo "$file is gzipped"
else
echo "$file is not gzipped"
fi
Run Code Online (Sandbox Code Playgroud)
jth*_*ill 28
实际上,在shell脚本中匹配这样的模式的最清晰且最简单的方法是 case
case "$f" in
*.gz | *.tgz )
# it's gzipped
;;
*)
# it's not
;;
esac
Run Code Online (Sandbox Code Playgroud)
Rah*_*thi 11
你可以尝试这样的事情: -
if [[ ${file: -3} == ".gz" ]]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
62824 次 |
最近记录: |