bash中包含多个变量的一行

时间:2016-03-15 13:36:45

标签: bash

我希望能够在一行上定义变量,如下所示:

variable=text1|text2|text3

而不是

variable1=text1
variable2=text2
variable3=text3

如何轻松完成此操作,然后仍然可以轻松地单独调用它们?最好通过使用$ variable [1]调用text2。

这些值实际上不必由管道分隔,例如。

我,我真的不是一个程序员,我只是在我的基于Ubuntu的HTPC上编写一些脚本,所以请保持温和;)

编辑:感谢DevSolar带领我走上正轨。我想要一个数组,但是使用另一个分隔符而不是空格,现在我解决了这个问题:

variable="text1;text2;text3"

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

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

刚才意识到管道可能不是最好的分隔符,所以我选择了分号。

3 个答案:

答案 0 :(得分:4)

也许您正在寻找的是array

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

将提供text1

答案 1 :(得分:0)

虽然数组可能是首选方式,但可以选择一次分配多个值

   <?xml version="1.0" encoding="utf-8"?>

    <com.balysv.materialripple.MaterialRippleLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lyt_parent"
    style="@style/RippleStyleWhite"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:layout_margin="@dimen/spacing_medium"
    >



    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >



        <ImageView
            android:id="@+id/img_android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:src="@drawable/black_bg" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/shape_overlay"
            android:padding="10dp">


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:orientation="horizontal">

            </LinearLayout>

            <TextView
                android:id="@+id/tv_android"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="Sample Title"
                android:gravity="center"
              android:textAppearance="@style/TextAppearance.AppCompat.Title"
                android:textColor="@android:color/white"
                android:textStyle="normal"
                android:layout_centerVertical="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true" />


            </RelativeLayout>
        </RelativeLayout>
    </com.balysv.materialripple.MaterialRippleLayout>

答案 2 :(得分: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

否则,可以直接进行数组分配:

var=("text 1" "text 2" text3)