【问题标题】:Using a shell script and BC使用 shell 脚本和 BC
【发布时间】:2014-11-18 19:35:46
【问题描述】:

我在很多方面对编程都非常陌生,所以感谢你忍受我的白痴,因为我确定我问这个问题的方式不正确。

多年来,我第一次不得不使用 linux 机器和很多命令行的东西。我需要使用已编写并准备就绪的云模型进行蒙特卡罗模拟。它有一个输入文件,我需要使用某种随机数生成器来更改设置的输入值。我的主管坚持让我使用 BC 生成随机数。

我的理解是 BC 是一种语言。我已经下载了它:

sudo apt-get install bc

现在我想我应该尝试编写某种脚本来复制原始输入文件,然后在原始文件中搜索字符串并用我希望它使用的字符串替换它们。我想我可以用 shell 脚本做到这一点?

我不明白如何同时使用 bc 和 bash。如果我输入一个 BC 命令它会这样做吗? BC 是否执行 shell 命令?这是如何工作的?

在你的回答中请记住,我只是一个带着电脑的实验室猴子,对编程一无所知。

【问题讨论】:

    标签: linux bash shell bc


    【解决方案1】:

    例如,您可以在 shell 脚本中使用 bc

    #!/bin/bash
    
    # Generate random number between 0 and 9
    RANDVAR=$(echo "$RANDOM % 10" | bc)
    echo $RANDVAR
    

    这个简单的脚本展示了如何为变量指定名称并稍后在脚本中使用它。 "$()" 中的任何内容都将运行,并将结果分配给名称(在本例中为 RANDVAR)。您可以稍后在替换中使用此变量,例如,sed

    【讨论】:

    • 2014年最好使用$( )而不是backticks
    • $RANDOM 取模 10 生成的数字会有偏差,因此不适合 Monte Carlo,因为 $RANDOM 的范围是 0 到 32767。
    【解决方案2】:

    shellbc 之间交互的一种方式:

    $ echo "$RANDOM % 5" | bc
    

    将打印一个 0 到 4 范围内的随机数

    $RANDOM 是一个伪随机整数,可直接在您的 shell 中使用。

    请注意,必须使用双引号才能使用 shell 变量。使用单引号,永远不会评估变量。

    之后,您可以根据需要使用(( )) 算术运算符进行算术运算:

    value=$(echo "$RANDOM % 5" | bc)  # 0 10 4
    ((value*10))                      # value X 10
    echo $value                       # display $value value
    echo "scale=2; $value / 100" | bc # scale=display 2 decimal
    

    【讨论】:

      猜你喜欢
      • 2015-09-11
      • 1970-01-01
      • 2011-01-20
      • 2016-03-31
      • 2018-05-20
      • 2015-07-22
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      相关资源
      最近更新 更多