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

2024-02-15

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

Input:

echo '1+1' | bc -l

Output:

2

Attempts:

(没用)

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

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

cmd 替换有 2 种形式

  1. 原始的,可以追溯到石器时代,但是完全可移植并且可以在所有类 Unix shell 中使用(几乎所有)。

    您可以将值生成命令括在反引号字符内,即

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

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

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

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

说到新功能,如果您确实使用 bash、zsh、ksh93+,那么您可以将示例代码重写为

a=$(( 1+1 ))

或者,如果您正在进行更多数学运算,这些运算都将保留在范围内,您可以使用 shell 特征算术,例如:

(( b=1+1 ))
echo $b
2

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将输出分配给 shell 脚本变量? 的相关文章

随机推荐

  • C 在结构体中初始化数组

    我想要在结构中包含一个可变长度数组 但在正确初始化它时遇到问题 struct Grid int rows int cols int grid int main struct Grid testgrid 1 3 4 5 6 我尝试的所有操作都
  • Elasticsearch 6.2 中的精确匹配、不区分大小写的匹配,无需标准化

    我查看了我能找到的关于执行完全匹配 不区分大小写的查询的每一篇文章和帖子 但在实现后 它们并没有执行我正在寻找的内容 在将此问题标记为重复之前 请阅读整篇文章 给定一个用户名 我想查询我的 Elasticsearch 数据库以仅返回与用户名
  • 两个相关 for 循环的复杂度,外层循环的复杂度为 log n

    问题 计算该算法的复杂度 for i n i gt 1 i i 2 for j i j
  • Laravel 默认 auth 模块翻译

    我已经生成了默认的 Laravel auth 模块 在模块刀片的各处 我都看到双下划线 假设翻译即将完成的函数 例如 li a class nav link href Login a li 我的问题 翻译文件在哪里 如果我创建一个 我应该把
  • Django 表单下拉字段中的占位符

    我对 django 形式的下拉字段有一个小问题 我想添加到此字段占位符 或不作为占位符的第一个选项 和一些其他内容 如无标签 类等 我写了这样的东西 在我的forms py但现在我的表单已损坏 不要将值保存到数据库中 from models
  • noexcept 在派生类中的用法

    我在使用时遇到问题noexcept派生类上的说明符 更准确地说 当父类是抽象类时 具有protected构造函数 以下是我声明类的方式的示例 With a public基类中的构造函数 一切正常 与相同的代码protected并且派生类不再
  • 协程中的热流和冷流是什么以及它们之间的区别?

    我正在掌握 Kotlin 协程并试图弄清楚 1 什么是热流和冷流 2 它们之间的主要区别是什么 3 什么时候使用每一个 冷流在开始收集值之前不会开始产生值 另一方面 热流立即开始产生值 我建议阅读以下内容以了解热蒸汽和冷蒸汽的使用 http
  • 如何删除 Windows Phone 8.1 应用程序中的动态磁贴标题?

    我正在 BackgroundTask 中使用 TileWide310x150Image 模板构建一个宽动态图块 它应该只显示宽图像 不显示文本或其他内容 这是我正在使用的模板
  • 如何预分配和初始化 `std::basic_string` 内的字符序列?

    我想知道如何在普通 C 字符串中预分配和初始化字符序列 提出这个问题的场合是查询 Windows 注册表中的值 看这个答案 https stackoverflow com a 16304707 1794538一些示例代码 问题在于系统调用写
  • 如何以编程方式对黑/白 UIImageView 进行着色?

    我有一组黑白图像 如下所示 如果我没记错的话 有某种方法可以设置 UIImage 的混合或遮罩属性以将其与背景 UIView 混合 在这种情况下 我想将该图像的颜色更改为红色以表示生命值 如何以编程方式更改此 UIImage 的颜色 我知道
  • 用于多行文本的 Java 注释实用程序

    WRT 多行 Java 字符串的任何未来计划 https stackoverflow com questions 11659225 any future plans for multiline java string 编写一个执行以下操作的
  • Python文件下载

    我遇到了问题 不确定这是否可能 所以是否有人可以指出我正确的方向 我需要从网页打开一个文件 在 Excel 中打开它并保存该文件 我在网站上遇到的问题是文件名有一个文件名 不是活动链接 然后它会有一个 下载 按钮 该按钮不特定于我需要下载的
  • 为什么 .tfignore 根本不起作用?

    我按照中的说明进行操作这篇微软文章 https www visualstudio com docs tfvc add files server customize which files are ignored by version con
  • Oracle:将 IPv4 地址转换为数字?

    如何将点十进制格式的 IPv4 地址转换为数字 例如 地址39 255 2 51应转换为4026466867 使用 regexp substr 提取地址的四个八位字节 通过将八位位组移回其原始位置来重构该值 正则表达式可能相对昂贵 因此如果
  • 如何在一个EC2实例上运行多个应用程序?

    这可能与这个问题有关 如何在一个 EC2 实例上运行多个应用程序 https stackoverflow com questions 16549026 how to run more than one app on one instance
  • Gradle 包装器标签不匹配错误

    我正在尝试使用 gradle 及其包装器手动配置 Android 项目 但我总是遇到相同的错误 我可以生成gradlew脚本如下build gadle file buildscript repositories jcenter depend
  • sqlite3 运行 sql - 选择所有带有 PUA 字符的

    我怎样才能运行 SELECT FROM 表名 其中列包含 PUA 字符 PUA https en wikipedia org wiki Private Use Areas 私人使用区域 在 Unicode 中 专用区域 PUA 是一系列代码
  • 在AngularJS中如何使用datalist

    div div
  • 使 tkinter 窗口在全屏应用程序之上绘制

    我想知道是否有一种方法可以在全屏应用程序上绘制 tkinter 窗口 到目前为止我有这个 from tkinter import MAIN WINDOW root Tk root title Test Title root geometry
  • 如何将输出分配给 shell 脚本变量?

    如何将此结果分配给 shell 变量 Input echo 1 1 bc l Output 2 Attempts 没用 bin sh a echo 1 1 bc l echo a 您正在寻找称为命令替换的 shell 功能 cmd 替换有