如何从Bash中的变量中读取文件扩展名?

时间:2015-04-23 01:04:25

标签: android bash

我正在为我的Android实用程序进行一次重大更新,你在恢复中闪现它并使用Bash Scripting ...问题是,我对bash一无所知!

现在,我有两个文件......一个包含变量的common文件和一个实际保存文件列表的script文件。

以下是common脚本的问题部分:

 if [ ${android_version} == 5.* ]; then
    rm -rf /system/$file_name;
    else
        if [ -e ${file_name}.* ]; then
            rm -rf /system/$file_name;
        else
            rm -f /system/$file_name.apk;
        fi;
    fi;

以下是$file_name来自哪里的例子:

# AOSP
aosp_remove_list="BootAnimation
Browser
...";

BootAnimation_list="media/bootanimation.zip";

Browser_list="app/Browser
app/ChromeBookmarksSyncAdapter";

所以在common文件中,它会查看它是否是Lollipop。如果没有,(这是问题)它应该从各个应用程序列表中查看文件名,看它是否包含文件扩展名。如果它没有,那么它将删除$file_name + .apk

因此,在上面的示例中,浏览器的文件会从系统中添加并删除.apk,但不会删除bootanimation .zip

1 个答案:

答案 0 :(得分:1)

您应该使用后缀截断来执行此操作。

使用${your_var_name%.zip},您可以在.zip包括拉链后获取所有内容(如果有的话)。

您可以在终端中尝试:

a="toto.zip"
echo ${a%.zip}  #= > toto

您可以在此处获得有关可能性的更多详细信息:http://www.tldp.org/LDP/abs/html/parameter-substitution.html