将单个变量分配给数组(就地)

2024-04-24

考虑以下代码:

a=(1 2 3)
a='seven'

export a
declare -p a

输出(来自declare) is:

declare -ax a='([0]="seven" [1]="2" [2]="3")'

So a是一个数组。问题:

  1. 如何改变第二行,所以a将不再是一个数组,而是一个带有值的简单变量seven?我正在寻找一个单线,没有unset etc.
  2. 将变量分配给数组仅替换第一个元素,而不是整个数组。此行为在哪里指定?

注意:Bash v.3.2.48 (OS X)。

(我已经回答了这个问题 https://stackoverflow.com/questions/18568933/joining-array-into-path-in-bash-on-osx/今天,这让我思考这个问题,我正在寻找一个更干净的解决方案)。


Edit:我正在寻找一个:

a=(1 2 3)

/* One line here please :) */
unset a
a='seven'

export a
declare -p a

但没有做明确的unset。在特殊情况下很重要a实际上是一个PATH变量(参见this https://stackoverflow.com/questions/18568933/joining-array-into-path-in-bash-on-osx/问题)。


你需要使用unset.

手册中的第一句话(如下所示)将解释这一点:

a='seven'

when a之前是一个数组是完全相同的说:

a[0]='seven'

引用自manual http://www.gnu.org/software/bash/manual/bashref.html#Arrays:

当分配给索引数组时,如果可选下标是 提供后,该索引被分配给;否则索引 分配的元素是语句 plus 分配的最后一个索引 一。索引从零开始。


The unset内置函数用于销毁数组。unset 名称[下标]销毁索引处的数组元素下标。必须注意 避免由文件名扩展引起的不必要的副作用。未设置名称, 其中 name 是一个数组,删除整个数组。下标为‘*’ or ‘@’还删除整个数组。

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

将单个变量分配给数组(就地) 的相关文章

  • Swift - 如何复制包含引用类型的数组

    我正在尝试复制数组及其值 为什么两个数组都引用同一个变量 您可以在 Playground 中尝试此操作 var view UIView view tag 1 var a UIView var b UIView a append view b
  • 使用 Arrays.copyOf 复制不同类型的数组时出现问题

    我正在尝试创建一个方法 该方法几乎将任何内容作为参数 并返回带有某些分隔符的值的串联字符串表示形式 public static String getConcatenated char delim Object names String st
  • 将文件内容存储到数组中

    我的刽子手程序有问题 我真的认为我需要做的事情超出了我对java的理解 这是我的代码 import java io BufferedReader import java io FileReader import java io FileNo
  • 数组所有可能的组合

    我有一个字符串数组 ted williams golden voice radio 我希望这些关键字的所有可能组合采用以下形式 ted williams golden voice radio ted williams ted golden
  • Python DNS服务器IP地址查询

    我正在尝试使用 python 获取 DNS 服务器 IP 地址 要在 Windows 命令提示符下执行此操作 我将使用 ipconfig 全部 如下所示 我想使用 python 脚本做同样的事情 有什么方法可以提取这些值吗 我成功提取了设备
  • 通过链接导航多个对象而不重复

    我正在尝试浏览一堆带有其他对象链接的对象 我想从 id 1 开始并浏览每个对象 有些对象会循环回到之前的对象 所以我想确保每个对象只查看一次 否则我会陷入无限循环 我还希望能够通过链接导航来判断哪些对象无法访问 我认为导航顺序并不重要 这是
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • 在汇编中初始化字符串数组

    我想创建一个数据数组 在初始化数据部分保存 5 个字符串 每个字符串正好有 4 个字符 每个字符串都有一些初始数据 例如第一个字符串的 abcd 第二个字符串的 efgh 等等 无效的 0任何字符串都不需要字符 如何用汇编语言初始化字符串数
  • “/bin/bash -l”无效选项

    好吧 我正在尝试在我们的超级计算机上运行隐藏为一项作业的串行 MPI 作业 主要提交脚本基本上如下所示 bin bash l PBS l nodes 4 ppn 8 walltime 24 00 00 cat PBS NODEFILE un
  • 如何发布数组多维角度js

    我在 angularjs 中有一个数组 示例如下 scope order qty 20 scope order adress Bekasi scope order city Bekasi 这个数组可以用这个代码发布 http method
  • 多维数组内的移动

    我有一个用表格显示的数组 如何使用用户输入进行移动 目前 0 被分配给每个数组 但我计划为该数组分配其他值 我的问题是 如何使用用户输入在数组内向上 向下 向右 向左移动和对角移动 Array 0 gt Array 0 gt 0 1 gt
  • Bash:单行命令以与 grep 命令相反的状态退出?

    如何减少以下 bash 脚本 grep P STATUS Perfect recess txt exit 1 exit 0 看起来我应该能够用一个命令来完成它 但我这里总共有 3 个命令 我的程序应该 阅读课间休息 txt 如果它包含 ST
  • JavaScript:预期的赋值或函数调用,却看到了一个表达式

    我正在使用 JSHint 来确保我的 JavaScript 是 严格的 但我收到以下错误 预期是赋值或函数调用 但看到的是表达式 关于以下代码 var str A B C D var data var strArr str split fo
  • 如何构建 if 语句并与各种值进行比较?

    我该怎么写这个if以更好的方式声明条件 if data in 8 downto 1 x 70 or data in 8 downto 1 x 69 or data in 8 downto 1 x 72 or data in 8 downto
  • 从 numpy 数组中删除连续的 RGB 值

    我最初根据灰度图像的初始数组创建了一个子数组 从 numpy 数组中删除连续数字 https stackoverflow com questions 50743769 deleting consecutive numbers from a
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 在 Bash 中监控 tomcat,直到它完成部署 war 或应用程序

    怎么可能Tomcat在 bash 脚本中进行监控以检测它是否完成了战争或应用程序的部署 应用场景 Tomcat 开始于systemd Tomcat 开始于catalina sh 使用 Tomcat 管理器 Tomcat从Eclipse启动
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • 实体框架:唯一(非主键)父字段上的复合外键

    我有一个表需要通过其绑定到另一个表Id列 并按其第三个表 Id Code 列 我可以轻松地做SQL服务器同时使用主键和唯一索引 但不知道如何实现它实体框架 如果我把 Key 两列上的属性 那么我无法创建第一个关系 否则 如果我只申请一个 K
  • 适用于 Windows 的二进制 python 包(模块)的无人值守安装

    是否没有合理的方法来执行 Windows 二进制 python 包的脚本安装 不幸的是 似乎几个基本的 Windows python 软件包 如 pywin32 和 py2exe 只能以 EXE 形式提供 而不是以 MSI 形式提供 据我所
  • fopen() 在 Linux 上创建文件失败

    我正在尝试通过创建一个文件fopen 如下 但不创建该文件并让我 Can t create file P S 我在 Linux Ubuntu 上使用 LAMP 服务器 在创建该文件之前我已经尝试过以下命令 sudo chmod R 755
  • 陷入状态 Monad

    我想使用节点和唯一键的 IntMap 创建一个图形结构 这个话题已经被很好地涵盖了here https stackoverflow com questions 12941625 ids from state monad in haskell
  • python sqlite3更新不更新

    问题 为什么这个sqlite3语句没有更新记录 Info cur execute UPDATE workunits SET Completed 1 AND Returns WHERE PID AND Args pickle dumps Re
  • sql server 存储过程首次运行缓慢

    我有一个存储过程 每天在午夜过后运行九次 它不是一个理想的存储过程 但您知道它是怎样的 没有任何计划能够与现实接触 此存储过程通常需要大约一分钟的时间来运行 根据其处理的数据量给出或花费一些时间 然而 在给定早晨的第一次运行中 有时会花费大
  • PHP XML - 在特定位置插入 XML 节点

    我想在 XML 文件中的特定位置插入一个带有子节点的节点 我该怎么做 例如 如果我有一个像这样的 XML
  • 使用 strcpy_s 作为 TCHAR 指针(Microsoft 特定)

    我想知道哪个是正确的方法 tcscpy tchar pointer tcslen tchar pointer T Hello World or tcscpy tchar pointer tcsclen tchar pointer T Hel
  • iOS 8 核心数据堆栈 - 致命错误:在解包可选值时发现 nil

    我对 iOS 开发比较陌生 决定实现自己的 Core Data 堆栈 替换 Apple 的默认堆栈 我必须对我的代码进行更改 显然 并且能够弄清楚它 但在这种情况下我不能 这是我的代码 import UIKit import CoreDat
  • 将整数转换为数组

    我正在尝试将 C 中的整数转换为包含该数字的每个数字的数组 即如果我有 int number 5400 我怎样才能到达 int numberArray 4 where numberArray 0 0 numberArray 1 0 numb
  • 从需要 stdin 的子进程实时打印 stdout

    这是后续这个问题 https stackoverflow com questions 17395243 printing stdout in realtime from subprocess 但如果我想传递一个参数stdin to subp
  • Titanium SDK 在 Ubuntu 12.04 上无法识别 Titanium CLI、node、alloy 或 npm

    Titanium SDK 在 Ubuntu 12 04 上无法识别 Titanium CLI node alloy 或 npm 我按照此处的 Titanium SDK 安装说明进行操作 http docs appcelerator com
  • Application.Current.MainWindow 与 Window.GetWindow(this)

    我需要访问托管给定控件的窗口 this在下面的代码片段中 假设我的应用程序中只有一个窗口 以下哪条语句占用的资源较少 或者是否有更好的方法来做到这一点 Application Current MainWindow Window GetWin
  • sed:每N行后插入一个字符串

    我想在大文件中每 30 行后插入一个字符串 我使用的是 mini sed 它不支持 波形符 范围运算符 我正在寻找仅限 sed 的解决方案 该线程是如何使事情变得过于复杂的另一个例子 这应该可以做到 sed 0 30 s string g
  • 具体来说,什么属于模型、视图和控制器?

    我一直在学习模型 视图 控制器范例 MVC 但我很困惑 因为有些教程与其他教程相矛盾 我目前对这个过程的理解是这样的 路由器 调度器 前端控制器 尽管 MVC 名称中没有具体提及 但 Router 仍然是一个非常重要的部分 正是在这里 请求
  • http://*:80 和 http://+:80 有什么区别

    在学习中关于网络部署 http technet microsoft com en us library dd569093 28WS 10 29 aspx我遇到了一些涉及 http 80 和 http 80 的 netsh exe 命令 这些
  • 联系我们页面

    我的 联系我们 页面无法正常工作 有这个错误 System Net Mail SmtpException 邮箱不可用 服务器 响应是 来自域必须与经过身份验证的域匹配 System Net Mail MailCommand CheckRes
  • 使用 SAXON for Java 将存储在字符串中的 XML 片段解析为 XSLT 中的节点

    在我的 XSLT 中 我有一个包含字符串的变量 该字符串包含 XML 片段 这是以编程方式输入的 但它相当于
  • 如何在 packages.config 中指定 NuGet 包来自外部源?

    我正在开发一个项目 该项目依赖于外部源的 NuGet 项目 我们正在使用包恢复 而不是将包提交到 Git 中 对于未在 NuGet 设置中配置此源的开发人员 是否可以在packages config 文件中指定应从其他源提取此包 e g
  • 将单个变量分配给数组(就地)

    考虑以下代码 a 1 2 3 a seven export a declare p a 输出 来自declare is declare ax a 0 seven 1 2 2 3 So a是一个数组 问题 如何改变第二行 所以a将不再是一个数