我希望能够在一行上定义变量,如下所示:
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]}"
刚才意识到管道可能不是最好的分隔符,所以我选择了分号。
答案 0 :(得分:4)
答案 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)