我需要将命令的多行输出分配给变量。 我读了这两个帖子:
assigning the output of a command to a variable in a shell script
Capturing multiple line output into a Bash variable
它适用于echo示例(多行命令):
#!/bin/bash
output="$( bash <<EOF
echo first
echo second
echo third
EOF
)"
echo "$output"
但它似乎不适用于具有多行输出的一个命令。我跑的时候
output="$( bash <<EOF
echo abc
uncrustify -c ~/.uncrustify.cfg --check filename
echo def
EOF
)"
我将收到第二行默认uncrustify -c ~/.uncrustify.cfg --check filename
输出:
FAIL: filename (File size changed from 404 to 417)
uncrustify -c ~/.uncrustify.cfg --check filename
的默认输出为:
Parsing: filename as language OC
FAIL: filename (File size changed from 404 to 417)
我想将这两行分配给输出变量并将所有输出隐藏到控制台。
答案 0 :(得分:0)
为什么不尝试:
output=`echo abc && uncrustify -c ~/.uncrustify.cfg --check filename && echo def`
或者更好的是,让变量存储新行:
output="$(echo abc)\n$(uncrustify -c ~/.uncrustify.cfg --check filename 2>&1)\n$(echo def)"
echo -e "$output"
请注意与-e
一起使用的echo
标记,因为这样可以将\n
序列转换为换行符。