我有一个先前运行的命令$cmd
,该命令输出多行。
我想从运行nth
的编辑版本中提取$cmd
行。
到目前为止,我已经尝试过:
local -a lines
for line in $(eval "$(some_edit $cmd)");do
lines+=("$line")
done
echo "${lines[$nth_line]}"
当echo
为$nth_line
时,我总是1
进行任何操作,对于较大的整数则一无所获。
我总是将$lines
是一个字符串数组-包含所有行。
我尝试了"
的组合,但无济于事。
答案 0 :(得分:2)
我不知道我是否理解您正确-您的意思是这样的?
#!/bin/bash
cmd="./script.sh"
# read stdout from $cmd into array lines
readarray lines < <($cmd)
# edit the second line
lines[1]=$'version: 0.99\n'
# loop over array and print lines
for line in "${lines[@]}"; do
printf "%s" "$line"
done
用于模拟$ cmd的测试脚本
#!/bin/bash
echo "start"
echo
echo "do something"
echo
echo "end"
输出
start
version: 0.99
do something
end