在bash中将多行输出捕获为数组不起作用

时间:2015-03-18 08:41:10

标签: bash

我有这个脚本

#!/bin/bash
MVAR=($(su - git -C "sftp user@xxx.xxx.xxx.xxx << EOF
pwd
EOF
" ))
echo ${MVAR[2]}

输出看起来像这样 Connected to xxx.xxx.xxx.xxx. Remote

如何修改脚本

Connected to xxx.xxx.xxx.xxx. Remote working directory:

1 个答案:

答案 0 :(得分:0)

我认为由于IFS (Internal Field Separator)而在空格上分裂。尝试将IFS定义为newlines

$ IFS=$'\n' MVAR=($(su - git -C "sftp user@xxx.xxx.xxx.xxx << EOF
pwd
EOF
" ))

我可以让你的命令在我的机器上运行。我用这个来测试本地并获得远程密码:

$ IFS=$'\n' MVAR=($(sftp -b <(echo pwd) localhost))
$ echo ${abc[1]}
sftp> pwd
$ echo ${abc[2]}                                   
Remote working directory: /home/cbliard