gpt4 book ai didi

shell - 如何将输出分配给 shell 脚本变量?

转载 作者:行者123 更新时间:2023-12-03 07:33:01 25 4
gpt4 key购买 nike

如何将此结果分配给shell变量?

输入:
echo '1+1' | bc -l
输出:
2
尝试 :

(没用)

#!bin/sh
a=echo '1+1' | bc -l
echo $a

最佳答案

您正在寻找称为命令替换的 shell 功能。

有两种形式的 cmd 替换

  • 原始的,回到石器时代,但完全可移植并且可用于所有类 Unix shell (几乎所有)。

    您将生成值的命令括在反引号字符内,即
    $ a=`echo 1+1 | bc -l`
    $ echo $a
    2
    $
  • $( cmd ) 提供的现代、不那么笨重、易于嵌套的 cmd 替换, IE。
    $ a=$(echo 1+1 |  bc -l)
    $ echo $a
    2
    $

  • 你的“she-bang”行说, #!/bin/sh ,所以如果你在一个真正的 Unix 平台上运行,那么它很可能是你的 /bin/sh是原始的 Bourne shell,将要求您使用上面的选项 1。

    如果您在仍然使用 #!/bin/sh 的同时尝试选项 2它可以工作,那么你就有了现代 shell 。尝试输入 echo ${.sh.version}/bin/sh -c --version看看你是否得到任何有用的信息。如果您获得了版本号,那么您将想要了解较新的 shell 包含的额外功能。

    说到较新的特性,如果你真的在使用 bash、zsh、ksh93+,那么你可以将你的示例代码重写为
    a=$(( 1+1 ))

    或者,如果您正在执行更多数学运算,这些都将保留在范围内,您可以使用 shell 功能算术,例如:
    (( b=1+1 ))
    echo $b
    2

    在任何一种情况下,您都可以避免额外的进程创建,但您不能在 shell 中进行浮点运算(而您可以使用 bc )。

    关于shell - 如何将输出分配给 shell 脚本变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16072351/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com