首页 > 解决方案 > 如何使用变量进行搜索以匹配任何字符串 - shell

问题描述

如何使用变量搜索部分字符串并分配给新变量

我的搜索变量是:db_uni_name=testdb_iac3bd

我的 Oratab 文件是:

+ASM1:/u01/app/12.2.0.1/grid:N
oidiaddb:/u02/app/oracle/product/12.2.0/dbhome_2:Y
testdb:/u02/app/oracle/product/12.2.0/dbhome_3:Y
oradb:/u02/app/oracle/product/12.2.0/dbhome_4:Y

我想搜索$db_uni_name以找到匹配的数据库名称和路径

在这种情况下,我想搜索 testdb 并分配如下:

DB_NAME=testdb
ORACLE_HOME=/u02/app/oracle/product/12.2.0/dbhome_3

标签: shellunix

解决方案


试试这个:

mayankp@mayank:~/Documents$ DB_NAME=$(echo $db_uni_name | grep `awk -F'_' '{print $1}'` Oratab.txt | awk -F ':' '{print $1}')
mayankp@mayank:~/Documents$ echo $DB_NAME
testdb
mayankp@mayank:~/Documents$ ORACLE_HOME=$(echo $db_uni_name | grep `awk -F'_' '{print $1}'` Oratab.txt | awk -F ':' '{print $2}')
mayankp@mayank:~/Documents$ echo $ORACLE_HOME 
/u02/app/oracle/product/12.2.0/dbhome_3

让我知道这是否有帮助。


推荐阅读