将动态性能视图 (v$asm_diskgroup) 的输出分配给 Shell 脚本中的变量

将动态性能视图 (v$asm_diskgroup) 的输出分配给 Shell 脚本中的变量

我正在尝试分配输出

从 v$asm_diskgroup 中选择名称;

到 Shell 中的变量。由于表名中存在特殊字符“$”,脚本失败。

注意:当我尝试分配“select sysdate from Dual”的值时,它的工作方式就像魅力一样。

任何帮助,将不胜感激。

有效的查询:

count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
        select sysdate from dual;
        exit;
END
)
echo $count

我遇到问题的查询:

count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
        select name from v$asm_diskgroup
        exit;
END
)
echo $count

答案1

您需要将带有 $ 的字符串放在单引号中:

value=$(... 'select name from v$asm_diskgroup;')

否则,shell 将尝试扩展名为 asm_diskgroup 的变量。 shell 不会扩展单引号内的变量。

答案2

我找到了一个简单的解决方法:

而不是使用

v$asm_diskgroup

我已将它分配给一个变量

tab='v$asm_diskgroup'

count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
    select name from $tab;
    exit;
END 
)
echo $count

相关内容