将数组转换为字符串

阿比南丹·马祖玛(Abhinandan Mazumdar)

我有一句话,test_var=ab_c_de_fg_.txt我需要存储ab_c在一个变量(2nd之前的字符_)和de_fg_第二个变量(第二个_和before之后的字符.txt)中,所以这两个变量可以在以后的操作中使用。

test_var=ab_c_de_fg_.txt

for ((i=0;i<{#test_var};i++))
do
    a[$i]="${var:$i:1}"
done

flag=0
temp=0

while [["$temp" -le "${#test_var}"]]
do
    if a[temp] -eq "_" && flag -eq 0
    flag = 1
    continue
fi

if a[temp] -eq "_" && flag -eq 1
#var1=arr[0] to arr[$(temp-1)]
#var2=arr[$(temp+1)] to arr[#(test_var)]
fi

temp=$((temp+1))
done

请指导我,因为我是Shell脚本的新手。谢谢。

芒登

这是一种执行您的问题要求的方法bash(并且忽略您的代码,因为我无法理解您要使用的代码):

$ test_var=ab_c_de_fg_.txt
$ read var1 var2 < <(echo "$test_var" | sed 's/_/ /2; s/\.txt$//')
$ echo "$var1"
ab_c
$ echo "$var2"
de_fg_

在脚本中,将只是:

test_var=ab_c_de_fg_.txt
read var1 var2 < <(echo "$test_var" | sed 's/_/ /2; s/\.txt$//')

而您现在拥有$var1$var2

诀窍是使用read读取两个变量。这会将其输入拆分为环境变量的当前值IFS(默认情况下,该空格是制表符和换行符)。sed命令将用_空格(s/_/ /2替换第二个.txt从其输入(s/\.txt$//的末尾删除,因此read传递给ab_c de_fg_.txt,并且由于中间有一个空格,每个字符串都保存在相应的变量中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章