当前位置: 首页 > 面试题库 >

Linux bash:多变量分配

公西毅
2023-03-14
问题内容

Linux bash中确实存在类似于PHP中以下代码的内容:

list($var1, $var2, $var3) = function_that_returns_a_three_element_array() ;

也就是说,您在一个句子中为3个不同的变量分配了一个对应的值。

假设我有bash函数myBashFuntion,该函数将stdout字符串“ qwert asdfg zxcvb”写入标准输出。是否可以做类似的事情:

(var1 var2 var3) = ( `myBashFuntion param1 param2` )

等号左边的部分当然不是有效的语法。我只是想解释我的要求。

但是,有效的方法如下:

array = ( `myBashFuntion param1 param2` )
echo ${array[0]} ${array[1]} ${array[2]}

但是索引数组的描述性不如普通变量名。
但是,我可以这样做:

var1 = ${array[0]} ; var2 = ${array[1]} ; var3 = ${array[2]}

但是,我还是希望避免另外3条语句。

我只是在寻找一种快捷方式语法。可能吗?


问题答案:

我想到的第一件事:

read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"

毫不奇怪,输出是

1|2|3


 类似资料:
  • 问题内容: 如何使用Swift在一行中分配多个变量? 问题答案: 你不知道 这是一种语言功能,可以防止赋值的标准不良副作用返回值,如Swift书中所述: 与C和Objective-C中的赋值运算符不同,Swift中的赋值运算符本身并不返回值。以下语句无效: 此功能可防止在实际需要等于运算符()时偶然使用赋值运算符()。通过使其无效,Swift可帮助您避免代码中的此类错误。 因此,这有助于防止此极其

  • 问题内容: 在Python中,我们可以将函数分配给变量。例如,math.sine函数: 有没有简单的方法可以将多个函数(即一个函数的一个函数)分配给一个变量?例如: 问题答案: 我认为作者想要的是某种形式的功能链。通常,这很困难,但是对于 接受一个论点 返回一个值, 列表中上一个函数的返回值与列表中下一个函数的输入类型具有相同的返回值 我们说有一个需要链接的函数列表,其中有一个参数,然后返回一个参

  • 问题内容: 我在Javascript中有一组全局计数器变量: 等等 然后,我有了一个Javascript函数,该函数接受一个映射到这些全局计数器的“索引”数字。在此函数内部,我需要使用传递给该函数的“索引”值来读写这些全局计数器。 我希望它如何工作的示例,但当然根本不起作用: 我希望我要实现的目标是明确的。如果没有,我会尽力澄清。谢谢。 编辑说明: 我不是要增加计数器的名称,而是要增加计数器包含的

  • 问题内容: 我继承了一些Python代码,这些代码用于创建巨大的表(最多19列,每行5000行)。花了 九秒钟 时间在屏幕上绘制了表格。我注意到每一行都是使用以下代码添加的: 字符串在哪里。 我将其更改为: 我注意到桌子现在出现了 六秒 。 然后我将其更改为: 基于这些Python性能提示(仍为6秒)。 由于调用了大约5000次,因此突出了性能问题。但是为什么会有如此大的差异呢?为什么编译器没有在

  • 问题内容: Python在一行中实际上分配多个变量的实际步骤是什么? 我过去经常做A [0],A [1] = A [1],A [0]交换,但是最近我在分配链接列表时遇到了一个错误。 变得早于我的预期,所以分配成为 但是,如果我这样做 有用! 我“假设”步骤是 不 那么,这些步骤是什么? 问题答案: Python中有一种叫做“扩展分配”的东西。 长话短说,您可以通过任务扩展迭代。例如,以下代码评估并

  • 问题内容: 我在Python中看到了这个声明,但是我不明白它的含义,也找不到解释: 问题是:和之间为什么会有逗号?那是什么类型的作业? 问题答案: 那是一个 “元组” 或 “解构” 分配- 参见例如多重分配语义。返回包含两个值的元组,因此等效于: 请参阅语言参考中的赋值语句: 如果目标列表是目标的逗号分隔列表:该对象必须是可迭代的,并且具有与目标列表中存在目标的项目数量相同的项目,并且这些项目从左