是否可以通过索引从字符串变量中获取元素?

时间:2017-01-26 17:58:55

标签: bash

如果我有一个由空格分隔的多个字符串元素的变量,是否可以通过提供索引来获取元素?你可以用数组做类似的东西吗?:

my_var="string1 string2 string3 string4"
echo $[my_var[3]] # this does not work

3 个答案:

答案 0 :(得分:2)

你使用......一个数组。

$ my_var=("string1" "string2" "string3" "string4")
$ echo "${my_var[3]}"
string4

但是,您可能会问,鉴于您的原始字符串,您可以将其拆分为数组吗?

$ read -a arr <<< "$my_var"

这样可行,但仅当字符串中的每个空间都被视为分隔符时。你不能引用一些作为文字空间的东西;这就是为什么数组首先被添加到语言中的原因。

你可能很幸运,你的字符串使用了一些其他分隔符,例如逗号,在这种情况下,您可以设置IFS

的值
IFS=, read -r -a arr <<< "$my_str"

但一般来说,字符串作为列表是脆弱的。

答案 1 :(得分:1)

您可以使用read命令存储它,并适当设置input-field-separator。它对您当前的输入无关紧要,因为默认IFS处理单词之间的单个空白字符。

IFS=' ' read -ra inputArray <<<"$my_var"

此处设置IFS=' '是可选的,添加它以强调在拆分包含其他限制器的字符串时使用它的必要性。

并以

的形式访问各个元素
printf "%s\n" "${inputArray[0]}"
string1

答案 2 :(得分:0)

如果您想要第三个单词,可以使用

cut -d" " -f3 <<< ${my_var}