如果我有子shell命令:
.findOne()
是否可以将output="$(runfoo)";
的输出的最后一行存储到变量runfoo
中?或者也许只有第一行?
答案 0 :(得分:5)
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)"
答案 1 :(得分: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 for intermed)
inter =($(runfoo))获取runfoo命令'$(runfoo)'的结果 在数组中inter =($(...))
这样,
间[0] =第一
间[1] = AAA
间[6] = BBB
因为IFS =空格标签或换行符
所以在开始时将IFS设置为换行符
数组inter的每个项目都是一行文本
inter [0] = first aaa
inter [2] = pattern 3
output = $(创建一个数组并打印此数组的第一项和最后一项)
所以回声“$ output”
首先是aaa
最后qqq
希望得到这个帮助。