2016-03-15 60 views
1

我希望能够在这样一行定义变量行:之一,在bash的几个变量

variable=text1|text2|text3 

,而不是

variable1=text1 
variable2=text2 
variable3=text3 

我怎么会轻易做到这一点之后,还可以能够以简单的方式分别打电话给他们?优选通过用$变量[1] text2的调用它们。

值不会真的要通过管道分离,即只是举例。

我”,M不是一个真正的编码器,我只是涉足我的基于Ubuntu HTPC一些脚本,所以请温柔;)

编辑:谢谢您DevSolar领导我在正确的轨道上。我想一个数组,但与另一个分隔符不是空间,现在我解决了它这样的:

variable="text1;text2;text3" 

IFS=';' read -r -a array <<< "$variable" 

echo "${array[0]}" 
echo "${array[1]}" 
echo "${array[2]}" 

刚刚意识到的管道可能没有最好的分隔符,所以我用分号来代替去。

回答

4

也许你要寻找的是一个array

array=(text1 text2 text3) 
echo ${array[0]} 

会给text1

+1

谢谢你带领我在正确的轨道上。查看我更新的关于我的解决方案 – SwedishGojira

0

尽管阵列可能是首选的方式,在一次

$ read var1 var2 var3 <<< "val1 val2 val3"; echo $var1 
val1 
+0

虽然'read'有很好的用途,这是不是其中之一。 'VAR1 =“VAL1” VAR2 =“值2” VAR3 =“VAL3”'(全部在一行,是)是合法的,更短,更易于阅读(不受IFS'的'当前值)。 – chepner

0

分配多个值,如果你已经有了喜欢

data="text 1|text 2|text3" 

一个字符串,然后使用read来填充数组是有用的替代:

$ IFS="|" read -ra var <<< "$data" 
$ echo "${var[0]}" 
text 1 
$ echo "${var[1]}" 
text 2 
$ echo "${var[2]}" 
text3 

否则,直接数组赋值是poss IBLE:

var=("text 1" "text 2" text3) 
相关问题