if [[ "$(basename "$file")" != "*.gz" ]]; then echo "The file is not a .gz file." fi 判断是错的
时间: 2023-07-19 15:26:59 浏览: 125
你是对的,这个判断条件是有问题的。因为引号包裹的字符串不会被解析为通配符,所以判断条件始终为真。正确的判断条件应该是:
```
if [[ "$(basename "$file")" != *.gz ]]; then
echo "The file is not a .gz file."
fi
```
这样就可以正确地判断basename后的文件名是否以.gz为后缀了。非常抱歉之前给你带来了困惑。
相关问题
if [[ "$(basename "$file")" != *.gz ]]; then echo "The file is not a .gz file." fi 不存在时报 sh: EAST-2023-05-10.log.gz: unknown operand
这个错误可能是因为你的if语句缺少了一个"then"关键字,导致Shell无法正确解析语句。你需要在if语句的最后加上一个"then"关键字,例如:
```
if [[ "$(basename "$file")" != *.gz ]]; then
echo "The file is not a .gz file."
fi
```
另外,你也可以尝试使用双引号将*.gz包裹起来,例如:
```
if [[ "$(basename "$file")" != "*.gz" ]]; then
echo "The file is not a .gz file."
fi
```
这样也可以避免一些潜在的语法错误。希望能帮到你。
shell 判断文件test.tar.gz 是不是*.gz类型的文件,不是则打印信息
可以使用以下命令来判断文件`test.tar.gz`是否是`.gz`类型的文件:
```shell
if [[ "$(basename "$file")" != *.gz ]]; then
echo "The file is not a .gz file."
fi
```
其中,`$(basename "$file")`会返回文件名,即`test.tar.gz`。如果文件不是`.gz`类型的文件,就会打印出"The file is not a .gz file."的信息。
阅读全文