【问题标题】:Indirect referencing in Korn ShellKorn Shell 中的间接引用
【发布时间】:2016-08-10 00:49:41
【问题描述】:

如何在 korn shell 中引用间接变量

假设我有一个变量

FLAG_1=0

我希望这个变量值从我设置的数组中改变

set -A Flags_array
Flags_array[0]=? #how to achieve this here

例如,如果我尝试

Flags_array[0]=$FLAG_1 # this won't work as this assign the value

我试着做这样的事情

Flags_array[0]=FLAG_1
echo ${Flags_array[0]}

但这给出了输出FLAG_1

我尝试使用nameref,但它给了我错误

$ nameref Flags_array[0]=FLAG_1
ksh: nameref:  not found

请告诉我实现这一目标的正确方法是什么? 因为我想做的是稍后 如果我写Flags_array[0]=10value of FLAG_1 becomes 10

【问题讨论】:

    标签: arrays shell ksh


    【解决方案1】:

    我刚刚在我的控制台上尝试过,您似乎使用了无效的 set 选项......尝试使用小 a 而不是大写:

    set -a Flags_array
    

    只是在我的控制台中这样做并工作:

    set -a array
    number=5
    array[0]= $number
    echo $array[0]   --------> from which i got result : 5[0]
    

    也只是为了知道以供将来参考,您不需要大括号{},仅当您在需要实际数据的地方调用变量时才使用这些括号(对于表达式感到抱歉),例如这里你会需要它们:

    were e.g. random=5
    
    sed "${random}s/^.*$/1/" test.txt
    

    希望这可以为您解决问题.. :)

    【讨论】:

    • 大写 A 也可以。 + 没有大括号你得到的结果不是一个有效的结果result : 5[0] 在这里我不寻求结果问题是关于间接引用
    • 男人告诉你什么,在我的机器上,它连接在私人服务器上,它与小 a 一起工作,在资本上我得到一个错误,而且它在结果上也能正常工作,你确定你正在运行ksh????
    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多