如果我有一个subshell命令:
output="$(runfoo)";
有没有办法只将runfoo
输出的最后一行存储到变量output
中?或者也许只有第一行?
output="$(runfoo | tail -n 1)"
output="$(runfoo | head -n 1)"
Stdout和stderr:
output="$(runfoo 2>&1 | tail -n 1)"
output="$(runfoo 2>&1 | head -n 1)"
随着bash
IFS=$'\n' output=$(inter=($(runfoo))
printf '%s\n' "${inter[0]}" "${inter[((${#inter[@]}-1))]}")
echo "$output"
runfoo返回一个多行结果:
首先是aaa
XCV
pattern3 a
BBB
最后qqq
inter是一个数组(inter为中介)
inter =($(runfoo))在数组中得到runfoo命令'$(runfoo)'的结果inter =($(...))
这条路,
间[0] =第一
Inter [1] = IE
inter [6] = bbb
因为IFS =空格标签或换行符
因此,在开始时将IFS设置为换行符
数组inter的每个项目都是一行文本
inter [0] =第一个aaa
inter [2] =模式3
output = $(创建一个数组并打印该数组的第一个和最后一个项)
所以回声“$ output”
首先是aaa
最后qqq
希望这有帮助。