bash - 如何在 bash shell 中将一个字符串拆分为多个变量?

标签 bash shell variables

<分区>

我一直在寻找解决方案并发现了类似的问题,只是他们试图用空格分隔句子,而答案不适用于我的情况。

当前,一个变量被设置为这样的字符串:
ABCDE-123456
我想将其拆分为 2 个变量,同时消除“-”。即:
var1=ABCDE
var2=123456

怎么可能做到这一点?


这是对我有用的解决方案:
var1=$(echo $STR | cut -f1 -d-)
var2=$(echo $STR | cut -f2 -d-)

是否可以使用没有定界符的 cut 命令(每个字符都设置为变量)?

var1=$(echo $STR | cut -f1 -d?)
var2=$(echo $STR | cut -f1 -d?)
var3=$(echo $STR | cut -f1 -d?)

最佳答案

要拆分由 - 分隔的字符串,您可以使用 readIFS:

$ IFS=- read -r var1 var2 <<< ABCDE-123456
$ echo "$var1"
ABCDE
$ echo "$var2"
123456

编辑:

以下是如何将每个单独的字符读入数组元素:

$ read -ra foo <<<"$(echo "ABCDE-123456" | sed 's/./& /g')"

转储数组:

$ declare -p foo
declare -a foo='([0]="A" [1]="B" [2]="C" [3]="D" [4]="E" [5]="-" [6]="1" [7]="2" [8]="3" [9]="4" [10]="5" [11]="6")'

如果字符串中有空格:

$ IFS=$'\v' read -ra foo <<<"$(echo "ABCDE 123456" | sed $'s/./&\v/g')"
$ declare -p foo
declare -a foo='([0]="A" [1]="B" [2]="C" [3]="D" [4]="E" [5]=" " [6]="1" [7]="2" [8]="3" [9]="4" [10]="5" [11]="6")'

关于bash - 如何在 bash shell 中将一个字符串拆分为多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520623/

相关文章:

c - 在 linux 的 C 程序中访问用户定义的环境变量?

linux - 这里文件 : no parameter expansion

sql - Powershell:将一个下拉框中的选择用作另一个变量

javascript - 将 javascript var 传递给 ajax 加载

variables - 如何在 NAnt 脚本中使用系统变量?

java - 如何在 Java 中以 sudo 权限执行 bash 命令?

arrays - SED 匹配/替换 URL 并更新序列化数组计数

linux - 如何在 shell 中执行 ssh 时更改文件权限

ruby-on-rails - 有没有办法自动将用户添加到gitlab?

java - 使用 org.apache.commons.exec.DefaultExecutor 执行 shell 命令