为for循环中的每个迭代分配新的bash变量
我有为for循环中的每个迭代分配新的bash变量,bash,loops,variables,for-loop,Bash,Loops,Variables,For Loop,我有pdb_列表。日志如下所示: cat pdb_lists.log 'PDB1','PDB2' 我需要从上面的列表中检查每个PDB的TDE状态,并分配给新变量 for i in $( cat $SQL_SPOOL_LOG_DIR/pdb_lists.log | sed "s/,/ /g" | sed "s/'/ /g") do PDB_TE_STATUS=$ORACLE_HOME/bin/sqlplus '/as sysdba' << EOF
pdb_列表。日志如下所示:
cat pdb_lists.log
'PDB1','PDB2'
我需要从上面的列表中检查每个PDB的TDE状态,并分配给新变量
for i in $( cat $SQL_SPOOL_LOG_DIR/pdb_lists.log | sed "s/,/ /g" | sed "s/'/ /g")
do
PDB_TE_STATUS=$ORACLE_HOME/bin/sqlplus '/as sysdba' << EOF
whenever sqlerror exit failure
connect / as sysdba
set head off
set pagesize 0
set linesize 145
set feedback off
alter session set container=$i;
show con_name;
spool $SQL_SPOOL_LOG_DIR/pdb_te_enable_status.log
select status from v\encryption_wallet;
spool off
EOF
CDB_CREATOR_PDB=$ORACLE_HOME/bin/sqlplus '/as sysdba' << EOF
whenever sqlerror exit failure
connect / as sysdba
set head off
set pagesize 0
set linesize 145
set feedback off
alter session set container=$i;
show con_name;
spool $SQL_SPOOL_LOG_DIR/pdb_cdb_creator_pdb_status.log
select distinct CREATOR_PDBNAME from v\$encryption_keys where CREATOR_PDBNAME not like 'CDB$ROOT%' and KEY_ID is not null;
spool off
EOF
done
用于$中的i(cat$SQL_SPOOL_LOG_DIR/pdb_lists.LOG | sed“s/,//g”| sed“s/”//g)
做
PDB_TE_STATUS=$ORACLE_HOME/bin/sqlplus'/as sysdba'使用关联数组。关联数组(也称为映射或字典)的行为类似于数组,但允许使用任意字符串作为索引
declare -A status
for pdb in ...; do
status["$pdb"]=...
done
要读取PDB的状态(无论是什么),请使用${status[nameofpdb]}
另请参见…作为旁白--。有关使用文件I/O的最佳实践的讨论,请参阅。还可以考虑运行代码并修复发现的引用错误。