如何在 bash 中使用变量的值作为另一个变量的名称[重复]

2024-01-31

我想声明一个变量,其名称来自另一个变量的值,我编写了以下代码:

a="bbb"
$a="ccc"

但没有成功。完成这项工作的正确方法是什么?


eval用于此目的,但如果您天真地这样做,将会出现令人讨厌的转义问题。这种事情通常是安全的:

name_of_variable=abc

eval $name_of_variable="simpleword"   # abc set to simpleword

这打破了:

eval $name_of_variable="word splitting occurs"

The fix:

eval $name_of_variable="\"word splitting occurs\""  # not anymore

最终的解决方法:将要分配的文本放入变量中。我们就这样称呼它吧safevariable。然后你可以这样做:

eval $name_of_variable=\$safevariable  # note escaped dollar sign

转义美元符号解决了所有转义问题。美元符号一字不差地保留下来eval函数,它将有效地执行此操作:

eval 'abc=$safevariable' # dollar sign now comes to life inside eval!

当然,这个任务不受一切影响。safevariable可以包含*, 空格,$等等(需要注意的是我们假设name_of_variable除了一个有效的变量名之外什么都不包含,并且我们可以自由使用:不是特殊的东西。)

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

如何在 bash 中使用变量的值作为另一个变量的名称[重复] 的相关文章

  • seq 使用逗号作为小数点分隔符

    我注意到一个奇怪的现象seq我的一台计算机 Ubuntu LTS 14 04 上的行为 不是使用点作为小数点分隔符 而是使用逗号 seq 0 0 1 0 2 0 0 0 1 0 2 我的另一台 PC 上相同版本的 seq 8 21 给出了正
  • 创建证书以通过 bash 在 Mac OS X 上签署 GDB

    我正在尝试通过以下方式在 Mac OS X 上安装 gdblink1 http www patosai com blog post installing gdb on mac os x yosemite and link2 http ntr
  • 使用 tac 和 sed 反转文件

    我有一个用例 我需要搜索并替换文件中最后一次出现的字符串并将更改写回文件 下面的案例是该用例的简化版本 我正在尝试反转该文件 进行一些更改 再次将其反转并写入该文件 我为此尝试了以下代码片段 tac test sed s a b sed i
  • 如何通过ssh获取远程命令的退出代码

    我正在通过 ssh 从远程计算机运行脚本 ssh some cmd my script 现在 我想在本地计算机上存储 shell 脚本的退出状态 我该怎么做 假设没有任何问题ssh其本身 其退出状态是在远程主机上执行的最后一个命令的退出状态
  • 如何将一个文本文件拆分为多个 *.txt 文件?

    我有一个文本文件file txt 12 MB 包含 something1 something2 something3 something4 有没有办法分开file txt分成 12 个 txt 文件 比方说file2 txt file3 t
  • shell脚本中的“##”是什么意思? [复制]

    这个问题在这里已经有答案了 在编写脚本时 我遇到了这个命令 f file 我很想知道 什么是 这行是什么意思 In bash 它删除了前缀模式 在这里 它基本上为您提供了最后一个路径分隔符之后的所有内容 通过贪婪地删除前缀 后面跟随任意数量
  • 如何根据 Bash 中的 VI 模式更改光标形状?

    我的 bashrc 中有以下行 set o vi 我希望我的光标在插入模式下具有管道形状 在命令模式下具有块形状 就像我在 vimrc 中放置以下内容时在 Vim 中的形状一样 let t SI e 6 q let t SR e 4 q l
  • 从 shell 查找不包含特定注释的 XML 文件

    我想搜索 awk grep sed 几个 XML 文件 pom xml 文件 跳过某些文件夹 而且 第一个条件是它们必须包含标签
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • 用于编译和运行 C++ 的 bash 脚本

    我正在尝试进入 C 但必须使用冗长的命令通过命令行运行东西很烦人 所以我想制作一个 bash 脚本来简化过程并运行这些命令 bin bash if 1 start then cd CCPP cd HelloWorld g Wall W We
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • 当我尝试在 .bashrc 中添加命令时出现命令未找到消息

    我问了一个问题如何在 bash shell 中编写漂亮优雅的 linux 命令 https stackoverflow com q 19720095 80353 当我尝试该建议时 我收到以下错误消息 Sorry command not fo
  • 在 Bash Linux 中,如果给定进程运行时间超过指定时间,如何获取通知?

    我一切顺利 我的程序在大约 N 秒内完成 maybe deadlock 但有时会随机发生死锁 导致程序永远挂起 为了调试这个 我想按照以下方式运行该程序 如何调试罕见的死锁 https stackoverflow com questions
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • 以不敏感的方式在 bash 中查找路径

    假设一条路径像 home albfan Projects InSaNEWEBproJECT 尽管事实上不使用这样的名称 有没有办法以不敏感的方式检查路径 我遇到了这个解决方案 但如果可能的话 我想找到一个内置或 gnu 程序 functio
  • Bash - 将键绑定到字符串(不是函数)

    如何获得键绑定以导致在命令行插入任意文本 在 zsh 中我这样做 bindkey s m myspecialscript 在 bash 中 有等效的吗 没有一个内置函数可以实现我想要的功能 bind e E home yourscript
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 静默检查 bash 脚本中是否存在 rpm

    我正在尝试使用 if 语句快速检查 rpm 是否安装在 bash 脚本中 但我想默默地做 目前 当我运行脚本并且 rpm 确实存在时 它将 rpm 的输出输出到我不想要的屏幕 if rpm qa grep glib then do some
  • GitHub Actions:如何将 toJSON() 结果传递给 shell 命令

    因此 我正在与 Github Actions 合作进行端到端测试 我正在查看的设置是让一项作业检索要测试的 url 列表 而我的第二项作业使用该列表创建一个矩阵并测试所有这些 我的问题是 当我实际运行测试脚本时 必须从命令行完成 因为我使用

随机推荐

  • 选择全日历中的整周

    我在使用 fullcalendar 插件时遇到了问题 我试图通过单击在月视图中选择整周 然后创建一个事件 换句话说 如果您单击特定周中的任何一天 该周将突出显示并创建一个事件 此后 该事件应输入我的数据库中 这是我到目前为止所拥有的
  • (w)ifstream 支持不同的编码吗

    当我使用 wifstream 将文本文件读取为宽字符串 std wstring 时 流实现是否支持不同的编码 即它可以用于读取例如ASCII UTF 8 和 UTF 16 文件 如果没有 我该怎么办 我需要阅读整个文件 如果这有影响的话 C
  • 空响应和未找到响应的 HTTP 状态代码

    我们正在实现基于 REST 的 Web 服务 并且对某些用例有一些疑问 考虑有一个唯一的帐户 其中包含一些信息 例如添加到购物车信息 如果不存在购物车信息 我们应该返回什么响应代码 例如 0 我们的理解是返回 200 并返回空响应 用户将购
  • assertj:比较 dto 和实体类之间的字段

    我需要比较一个DTO类及其Entity class 例如 一个AddressDTO类将是 Setter Getter NoArgsConstructor AllArgsConstructor public class AddressDTO
  • React CRA with CSP:拒绝执行内联脚本

    我已经使用以下方式建立了一个新网站Material UI 创建 React 模板 https github com mui org material ui tree master examples create react app 我添加了
  • agrep:只返回最佳匹配

    我在 R 中使用 agrep 函数 它返回匹配向量 我想要一个类似于 agrep 的函数 它只返回最佳匹配 或者如果存在平局则返回最佳匹配 目前 我正在对结果向量的每个元素使用 cba 包中的 sdist 函数来执行此操作 但这似乎非常多余
  • 在 IntelliJ 中的弹出 JavaDoc 上隐藏 JetBrains 注释

    有没有办法隐藏或turn off those 可用推断注释当我从方法中阅读弹出文档时 如下图所示 IntelliJ IDEA 中没有设置可以禁用它 I ve 提交了请求 https youtrack jetbrains com issue
  • 在 Elastic Beanstalk 上部署 NestJS 应用程序

    我正在尝试将我的 NestJS 应用程序部署到 AWS elastic beanstalk 但没有取得任何成功 有人可以一步步写下我如何实现这一目标吗 完整解释 我有一个带有 typeorm 的 Nestjs 应用程序 但没有将其配置为与
  • 什么允许匿名无参数委托类型不同?

    已读入 作为 C 3 0 中的委托和 Lambda 表达式 系列文章的一部分 短语 高级主题 无参数匿名方法 匿名方法可以省略参数列表 delegate return Console ReadLine 例如 这是非典型的 但确实如此允许相同
  • RSelenium 与 Tor 在 Windows 上具有新的 RSelenium 版本

    我发现 jdarrison 关于如何使用 Tor 启动这个很棒的答案RSelenium在窗户上 https stackoverflow com a 39048970 7837376 https stackoverflow com a 390
  • 与平台特定语言相比,使用 Adob​​e Air/Java 编写 Web 应用程序的优点/缺点?

    我需要为 Windows 和 Mac 也许还有 Linux 编写一个 Web 应用程序 也可以离线工作 我想知道我是否应该使用像air flash java 这样的东西 优点是我只需要编写一次应用程序 然而 我想知道这样做是否有任何缺点 而
  • Visual Studio 2022 未加载依赖项

    升级到 Visual Studio 2022 并安装 Net 6 0 SDK 后 我似乎在运行项目时遇到问题 每当我打开现有项目甚至创建新项目时 我都会收到以下依赖项错误 如果我尝试构建项目 我会收到错误 错误列表中没有任何错误 尝试了一些
  • Node.js 如何响应升级请求?

    我正在处理来自 Node js http 服务器的 websocket 升级 事件 升级处理程序的格式为 function req socket head 如果没有资源 我如何发送对此升级请求的响应目的 有没有办法使用套接字对象来做到这一点
  • Python 使用新的相机位置创建图像

    我现在正在努力完成一项特定的计算机视觉任务 例如 假设我们有一个道路的相机框架 现在我想用水平平移的假想相机生成一个新帧 此外 还添加了一个微小的摄像角度 为了说明这一点 我上传了一张演示图片 如何在 python 中从原始框架创建新框架
  • Oracle SQL:收到“没有匹配的唯一键或主键”错误,但不知道原因

    我在尝试创建表时收到此错误 但我不知道为什么 2016 07 05 14 08 02 42000 2270 ORA 02270 no matching unique or primary key for this column list 这
  • 为 Windows 中的目录生成校验和

    我想为目录创建校验和 我正在遵循对此给出的答案post https stackoverflow com questions 17228202 generate md5 keys and save in a text file 但问题是它正在
  • Java 中带有过期时间的对象池的第三方库

    我在 Web 服务服务器上 并且有具有内部连接的对象 初始化此连接需要很长时间 因此我的想法是使用对象池来重用不同请求之间的连接 这些对象连接到每个用户 因此我更喜欢使用用户名作为键 使用连接作为值 但我不想让连接永远打开 也许一段时间后
  • 接口,无法在Unity配置上构建

    我在这个项目上使用 Unity 时遇到问题 错误是 当前类型 Business Interfaces IPersonnelBusiness 是 接口 无法构造 您是否缺少类型映射 由于堆栈溢出 我已将 Unity 更新到最新版本issue
  • Laravel PHPunit Dataprovider 错误“指定的数据提供者无效”

    我正在使用 dataprovider 并从数据库中获取数据 public function logoProvider result Event inRandomOrder gt select id gt whereNotNull logo
  • 如何在 bash 中使用变量的值作为另一个变量的名称[重复]

    这个问题在这里已经有答案了 我想声明一个变量 其名称来自另一个变量的值 我编写了以下代码 a bbb a ccc 但没有成功 完成这项工作的正确方法是什么 eval用于此目的 但如果您天真地这样做 将会出现令人讨厌的转义问题 这种事情通常是