Oracle相关文档,希望互相学习,
共同进步
1.背景
今天需求:需要将多层变量进行重定向赋值,本文简要记录实现过程。
2. 实验
2.1 变量定义 及2层变量 重定向后取值
代码:
bash
name=aa
aa=bb
或者
name=aa && aa=bb
要想拿到name的值 所对应的变量,尝试了以下嵌套 ,不可以
(其中:$$ 会返回后台任务的进程ID )
截图:

解决方案:以下两种实现,eval 方式 和 !方式。
实现1:采用 ${!} 中!方式重定向变量,实现取值 ok
命令:
bashecho ${!name}截图:
实现2:采用 ${!} 中!方式重定向变量,实现取值 ok
命令:
basheval echo \${\${name}}截图:
2.2 多个变量定义 及 多层重定向后取值
代码:
bash
name=aa && aa=bb && bb=cc
eval echo \${${!name}}
eval方式:会对cmdline进行两遍扫描,第一遍扫描后,如果cmdline是一条普通命令,则执行该命令;如果cmdline中含有变量的间接引用,则保证间接引用的语义。反引号"本身对\进行了转义,并保留了其本身的意思,如果要在反引号中 起到\的意思,必须加两个\。
但是多层不适用了,只能嵌套。
截图:

2.3 多个变量定义 及重定向后取值 循环
代码:
bash
var=$name
while [ -n "${!var}" ]; do
var=${!var}
done
echo $var
截图:

3.总结
多层重定向赋值:可以采用eval方式 或者采用循环赋值的方式实现。
eval方式:会对cmdline进行两遍扫描,第一遍扫描后,如果cmdline是一条普通命令,则执行该命令;如果cmdline中含有变量的间接引用,则保证间接引用的语义。反引号"本身对\进行了转义,并保留了其本身的意思,如果要在反引号中 起到\的意思,必须加两个\。
实验验证:ok 
项目管理--相关知识 
项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客
项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客
项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客
Oracle其他文档,希望互相学习,
共同进步
Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客
oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客
ORA-12899报错,遇到数据表某字段长度奇怪现象:"Oracle字符型,长度50"但length查却没有50_varchar(50) oracle 超出截断-CSDN博客

