作者slchen1013 (aa)
看板Linux
标题[问题] bash script 无法做 cp
时间Thu May 15 13:26:57 2008
Hi, 大家
今天真是见鬼了...
#!/bin/sh
JOB=$1
POTsrcdir=/opt/chem/MSI/MaterialsStudio/Data/Resources/Quantum/Castep/Potential
s/
m=`awk '/%BLOCK\ SPECIES_POT/ {print NR}' ${JOB}.cell`
n=`awk '/%ENDBLOCK\ SPECIES_POT/ {print NR}' ${JOB}.cell`
POTpos=$(($m+1))
for ((POTpos=$(($m+1)); POTpos<n; POTpos=POTpos+1 ))
do
sedPOT=${POTpos}p
POTname=`sed -n ${sedPOT} ${JOB}.cell | awk '{print $2}'`
POTsrc=${POTsrcdir}${POTname}
cp $POTsrc .
done
这段 code 主要是为了从某个档案中找出特定档名,再把它copy到现行目录下,
可是执行後会出现
cp: cannot stat `/opt/chem/MSI/MaterialsStudio/Data/Resources/Quantum/Castep/Po
tentials/Ga_00.usp\r': No such file or directory
cp: cannot stat `/opt/chem/MSI/MaterialsStudio/Data/Resources/Quantum/Castep/Po
tentials/Ag_00.usp\r': No such file or directory
cp: cannot stat `/opt/chem/MSI/MaterialsStudio/Data/Resources/Quantum/Castep/Po
tentials/Te_00.usp\r': No such file or directory
档案来源确实是存在的...
另外不晓得为什麽echo POTsrc 时看起来结果正确
可是 cp 时会在变数结尾多了一个 \r 的 escape character
另外我刚刚也没查到 \r 在 bash script 里代表了什麽...
恳请指点
谢谢
附上输入档的片段内容
%BLOCK SPECIES_POT
Ga Ga_00.usp
Ag Ag_00.usp
Te Te_00.usp
%ENDBLOCK SPECIES_POT
我就是要从这一个片段取出 Ga_00.usp 然後做复制的动作
script 中的 for loop 会自动把另外两个 .usp 档处理好...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.13.111.50
1F:推 Jerr:awk '{print $2}' 改成 awk '{printf("%s",$2)}' 05/15 15:29
2F:→ Jerr:因为print就像echo会加\n 05/15 15:29