BASH如果String包含case语句

时间:2014-03-28 11:56:27

标签: string bash shell switch-statement substring

我希望根据子字符串是否在文件名中提供案例陈述。

示例输入

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

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

1 个答案:

答案 0 :(得分:8)

如何初始化$ 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