首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux bash:多变量赋值

问Linux bash:多变量赋值
EN

Stack Overflow用户
提问于 2009-12-23 20:03:49
回答 5查看 153.1K关注 0票数 142

linux bash中确实存在类似PHP中的以下代码:

代码语言:javascript
复制
list($var1, $var2, $var3) = function_that_returns_a_three_element_array() ;

也就是说,你在一句话中为3个不同的变量分配了相应的值。

假设我有一个bash函数myBashFuntion,它将字符串"qwert asdfg zxcvb“写入标准输出。是否可以这样做:

代码语言:javascript
复制
(var1 var2 var3) = ( `myBashFuntion param1 param2` )

当然,等号左边的部分不是有效语法。我只是在试着解释我所要求的。

不过,有效的方法如下:

代码语言:javascript
复制
array = ( `myBashFuntion param1 param2` )
echo ${array[0]} ${array[1]} ${array[2]}

但是索引数组不像普通变量名那样具有描述性。

但是,我可以这样做:

代码语言:javascript
复制
var1 = ${array[0]} ; var2 = ${array[1]} ; var3 = ${array[2]}

但这些都是我更希望避免的3个语句。

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-23 20:16:43

我想到的第一件事是:

代码语言:javascript
复制
read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"

不出所料,输出是

代码语言:javascript
复制
1|2|3
票数 260
EN

Stack Overflow用户

发布于 2014-02-07 18:19:43

我想将这些值赋给一个数组。因此,扩展Michael Krelin's approach,我做到了:

代码语言:javascript
复制
read a[{1..3}] <<< $(echo 2 4 6); echo "${a[1]}|${a[2]}|${a[3]}"

这会产生:

代码语言:javascript
复制
2|4|6 

不出所料。

票数 22
EN

Stack Overflow用户

发布于 2009-12-30 07:55:46

我想这可能会有帮助..。

为了分解用户在脚本中输入的日期(mm/dd/yyyy),我将日、月和年存储到一个数组中,然后将这些值放入单独的变量中,如下所示:

代码语言:javascript
复制
DATE_ARRAY=(`echo $2 | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1952404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档