1

我有以下形式的条目:cat:rat我想将它们分配给 bash 中的单独变量。我目前可以通过以下方式做到这一点:

A=$(echo $PAIR | tr ':' '\n' | head -n1)
B=$(echo $PAIR | tr ':' '\n' | tail -n1)

之后$A$B分别是猫和老鼠。回声,两个管道,感觉有点矫枉过正我错过了一种更简单的方法吗?

4

3 回答 3

6

使用read命令

entry=cat:rat
IFS=: read A B <<< "$entry"
echo $A    # => cat
echo $B    # => rat
于 2013-06-07T16:10:08.680 回答
2

是的,使用bash 参数替换

PAIR='cat:rat'
A=${PAIR/:*/}
B=${PAIR/*:/}
echo $A
cat
echo $B
rat

或者,如果您愿意使用数组代替单个变量:

IFS=: read -r -a ARR <<<"${PAIR}"
echo ${ARR[0]}
cat
echo ${ARR[1]}
rat

编辑:参考 glenn jackman 的答案以获得最优雅read的解决方案

于 2013-06-07T15:48:09.767 回答
0
animal="cat:rat"
A=echo ${animal} | cut -d ":" -f1
B=echo ${animal} | cut -d ":" -f2

可能不是最好的解决方案。只是给你一个可能的解决方案

于 2013-06-07T17:26:56.737 回答