shell 脚本抛出错误中的双参数

Double Parameter in shell scripting throwing error

我试图让我的脚本更通用,因此试图传递参数。 我有包含变量(在脚本中使用)和脚本中的配置文件,我在另一个脚本(ksh)中获取(源命令)文件。

配置文件包含:

p2020_m23_ORACLE_USERNAME=sanjeeb

脚本的参数是 p2020_m23

ksh 脚本:

export SOURCE_CD=
export CONFIG_FILE=/user/spanda20/dbconfig.txt
source $CONFIG_FILE

USERNAME=${${SOURCE_CD}_ORACLE_USERNAME} << **This throws error** >>
USERNAME=$p2020_m23_ORACLE_USERNAME  <<< **This gives correct result** >>

手动测试:

[spanda2 config]$ export SOURCE_CD=p2020_m23
[spanda2 config]$ export m23_ORACLE_USERNAME=sanjeeb
[spanda2 config]$ export USERNAME=${${SOURCE_CD}_ORACLE_USERNAME}
-bash: USERNAME=${${SOURCE_CD}_ORACLE_USERNAME}: bad substitution
USERNAME_REF="${SOURCE_CD}_ORACLE_USERNAME"
USERNAME="${!USERNAME_REF}"

${parameter} -参数的值被代入 所以如果你想附加 2 个变量的值并分配给其他 .你应该这样写

  export SOURCE_CD=p2020_m23
  export m23_ORACLE_USERNAME=sanjeeb
  export USERNAME="${SOURCE_CD}_${ORACLE_USERNAME}"

在 ksh 中,您可以使用 typeset -nnameref 的变量间接寻址。

简单示例:

    $ typeset -n that
    $ this=word
    $ that=this
    $ echo $that
    word
    $ this=nothing
    $ echo $that
    nothing

名称引用现在使 $that return 成为 $this 的当前值。