如何将输出赋给shellscript变量? [英] How to assign an output to a shellscript variable?

查看:23
本文介绍了如何将输出赋给shellscript变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将此结果赋给shell变量?

输入:

echo '1+1' | bc -l

输出:

2

尝试

(不起作用)

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

推荐答案

您正在寻找称为命令替换的外壳程序功能。

cmd替换有两种形式

  1. 原始的,回到石器时代,但完全便携,并且在所有类Unix的shell(几乎所有)中都可用。

    将值生成命令括在反勾号字符内,即

    $ a=`echo 1+1 | bc -l`
    $ echo $a
    2
    $
    
  2. $( cmd )提供的现代化、外观不那么笨重、易于嵌套的命令替换,即

    $ a=$(echo 1+1 |  bc -l)
    $ echo $a
    2
    $
    

您的"sher-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)。

这篇关于如何将输出赋给shellscript变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆