0

我在脚本中使用以下几行。

foo=$1

bar=$(printf  ' , "%s" u ($1):($2) lw 8 ti' ${foo[@]} ${foo[@]} ${foo[@]} ${foo[@]}   )

bar=${bar:2}

echo $bar    

这将产生以下行作为变量 bar 的值

"rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti

是否可以修改脚本,使输出为:

"rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($3) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($4) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($5) lw 8 ti
4

2 回答 2

1

将您的 printf 行更改为以下内容:

bar=$(printf ' , "%s" u ($1):($%s) lw 8 ti' ${foo[@]} "2" ${foo[@]} "3" ${foo[@]} "4" ${foo[@]} "5" )
于 2013-10-07T23:19:31.347 回答
0

看起来您正在用新字符串替换一些 $2。在之前插入这一行echo $bar

bar=$(echo $bar | sed 's/$2/$5/4; s/$2/$4/3; s/$2/$3/2;')

这用新的相应值 $5、$4 和 $3 替换了第 4 次、第 3 次和第 2 次出现的 $2。

于 2013-10-07T15:37:37.853 回答