在令牌上将字符串拆分为数组

时间:2010-03-27 09:45:08

标签: string bash arrays logging

我正在编写一个脚本来执行异地rsync备份,每当rsyncline收到一些输出时,它就会转到一个变量中。然后我想将该变量拆分为 ^ M 标记上的数组,以便我可以将它们发送到两个不同的记录器会话(所以我将它们放在日志中的单独行上)。

我执行rsync的当前行

  

result=`rsync --del -az -e "ssh -i $cert" $source $destination 2>&1`

服务器不可用时的日志结果

  

ssh:连接到主机 offsite 端口22:连接超时^ M rsync:连接意外关闭(到目前为止收到0个字节)[sender] rsync错误:无法解释的错误(代码255)在io .c(601)[sender = 3.0.7]

4 个答案:

答案 0 :(得分:1)

IFS=$'\n' read -a foo <<< $'12\n345\n67'
echo "${foo[@]}"

答案 1 :(得分:1)

^M$'\r',因此您可以尝试将其作为分隔符:

IFS=$'\r' read -ar result <<< $(rsync --del -az -e "ssh -i $cert" $source $destination 2>&1)
echo ${result[0]}   # first part
echo ${result[1]}   # second part

答案 2 :(得分:0)

IFS=$'\r'
set -- $result
echo $1
echo $2

答案 3 :(得分:0)

谢谢你们,通过各种答案,我想出了一个有效的解决方案。在这里。

result=`rsync --del -az -e "ssh -i $cert" $source $destination 2>&1`
IFS=$'\n'
for variable in $result; do
    logger $variable
done
unset IFS

现在整个脚本都有效!