【问题标题】:what is the proper syntax for calling Porperty in shell在 shell 中调用 Property 的正确语法是什么
【发布时间】:2012-09-23 14:51:06
【问题描述】:

我正在尝试运行以下脚本:

#!/bin/sh
. ./test.prop

for ((i=0; i<10;i++)
do
    echo $F($i)
done  

它来源的文件包含参数分配:

F1=20
F2=30
F3=40
.
.
.

脚本的期望输出是

10
20
30
40
.
.
.

$F($i) 的正确语法是什么?还是我不能简单地使用它?

【问题讨论】:

  • 什么是F?您是从文件中读取数字还是只想使用循环打印?
  • 关于 test.prop 文件中的数字,所以我想使用循环打印所有 F...所以 echo $F1...echo $F2...

标签: linux bash shell unix aix


【解决方案1】:

您可以使用间接参数扩展:

for ((i=0; i<10; i++)); do
    f="F$i"
    echo "${!f}"
done

【讨论】:

    【解决方案2】:

    为什么不使用数组?

    F=(10 20 30 ...)
    

    for i in {0..9}; do
        echo ${F[i]}
    done  
    

    【讨论】:

      【解决方案3】:

      你应该使用eval:

      eval "echo \$F$i"
      

      Eval 用于评估然后运行命令,允许您动态生成命令。通过转义第一个美元符号,它在生成的命令中显式使用,而注意转义第二个美元符号允许我们将其值扩展为用于生成变量名称的数字。所以假设$i包含值“1”,生成的命令为echo $F1

      希望这会有所帮助 =)

      【讨论】:

      • 哇,正是我想要的。感谢您的解释和回答!
      【解决方案4】:

      你可以使用grep命令:

      grep ^F prop.test | awk -F= '{print $2}'
      

      这将 grep 所有以 F 开头的行并打印 = 之后的数字。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-20
        • 1970-01-01
        • 2012-10-15
        • 2011-08-31
        • 1970-01-01
        • 2014-04-19
        • 2018-11-14
        • 2019-09-07
        相关资源
        最近更新 更多