如何在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
相关产品推荐
相关产品推荐

