BASH如果String包含case语句

Cha*_*bon 5 string bash shell substring switch-statement

我希望根据子字符串是否在文件名中提供case语句.

示例输入

mysql_dumps/tpmysqldump-tps_dev_russell_development-INFORMATION_SCHEMA-2014-03-26.sql

    case $DUMPFILE in
         *"tpdata"*)
             database="tpdata";;
         *"tpmrbs"*)
             database="tpmrbs";;
         *"information_schema"*)
             database="information_schema";;
         *"performance_schema"*)
             database="performance_schema";;
         *)
             echo "INVALID FILE";;
    esac
Run Code Online (Sandbox Code Playgroud)

任何想法为什么这不起作用?

slu*_*slu 9

你如何初始化$ DUMPFILE?如果我运行以下,输出是information_schema,这是我所期望的...

#!/bin/bash
DUMPFILE=mysql_dumps/tpmysqldump-tps_dev_russell_development-information_schema-2014-03-26.sql
case $DUMPFILE in
    *"tpdata"*)
        database="tpdata";;
    *"tpmrbs"*)
        database="tpmrbs";;
    *"information_schema"*)
        database="information_schema";;
    *"performance_schema"*)
        database="performance_schema";;
    *)
        echo "INVALID FILE";;
esac
echo $database
Run Code Online (Sandbox Code Playgroud)

  • @user2373636 不要试图删除该问题。它确实很有帮助,因为当您想要验证子字符串大小写是否可能时,它是第一个出现的。 (3认同)