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