我在父目录中有一个扩展名为* sac的文件,这些文件包含地震波形表头信息。我想在一个文件中打印所有文件的特定标题信息。 这就是我到目前为止所做的。
#!/bin/bash
file=map
for i in ./*sac
do
SLA=`saclhdr -STLA $i`
SLO=`saclhdr -STLO $i`
ELA=`saclhdr -EVLA $i`
ELO=`saclhdr -EVLO $i`
echo "MAP GREAT CIRCLE RAY PATHS USING PROJECT">file ;
echo "$SLA $SLO " >>file;
echo "$ELA $ELO " >>file;
echo "PLOT EPICENTER LOCATIONS" >>$file;
echo "$ELA $ELO " >>file;
echo "PLOT STATION LOCATIONS">>$file ;
echo "$SLA $SLO " >>file;
done
输出结果为:
MAP GREAT CIRCLE RAY PATHS USING PROJECT
-10.4807 105.652
-7.7592 67.8257
PLOT EPICENTER LOCATIONS
-7.7592 67.8257
PLOT STATION LOCATIONS
-10.4807 105.652
这里我得到一个文件的打印信息,我要打印所有文件指定的内容
SLA SLO
ELA ELO
逐个所有文件
答案 0 :(得分:1)
你需要这样说:
#!/bin/bash
file=map
echo "MAP GREAT CIRCLE RAY PATHS USING PROJECT" > "$file"
for i in ./*sac
do
SLA=$(saclhdr -STLA "$i")
SLO=$(saclhdr -STLO "$i")
ELA=$(saclhdr -EVLA "$i")
ELO=$(saclhdr -EVLO "$i")
echo "$SLA $SLO "
echo "$ELA $ELO "
done >> "$file"
重定向必须放在for循环体之外,以便连续追加到文件中,而不是在每个回合中重新创建它。
答案 1 :(得分:0)
问题在于这一行。
echo "MAP GREAT CIRCLE RAY PATHS USING PROJECT">file ;
你正在覆盖内容。使用>>而不是>