You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BusyBox sh中检测文件名是否含点号以添加扩展名?

在BusyBox环境下判断文件名是否含点号的解决方案

在BusyBox使用的POSIX兼容Shell中,不支持[[ ]]这类Bash扩展语法,你可以通过以下两种标准方法实现需求:

方法1:使用case语句(推荐,兼容性最优)

利用POSIX标准的case模式匹配,直接判断字符串是否包含点号:

#!/bin/sh

dest=$2
if [ "$dest" != "." ]; then
    case "$dest" in
        *.*) ;;  # 文件名含点号(已有扩展名),不做处理
        *) dest="$dest".tar.gz ;;  # 文件名不含点号,添加.tar.gz扩展名
    esac
fi

方法2:使用expr命令

借助POSIX标准工具expr的正则匹配功能来判断:

#!/bin/sh

dest=$2
if [ "$dest" != "." ]; then
    # 匹配任意包含点号的字符串,匹配失败时返回非0值
    if ! expr "$dest" : ".*\." > /dev/null; then
        dest="$dest".tar.gz
    fi
fi

内容的提问来源于stack exchange,提问作者J-A-Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:05:54