如果我有一个由空格分隔的多个字符串元素的变量,是否可以通过提供索引来获取元素?你可以用数组做类似的东西吗?:
my_var="string1 string2 string3 string4"
echo $[my_var[3]] # this does not work
答案 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}