bash script 無法做 cp - Linux

Table of Contents

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 檔處理好...

--

All Comments

Caroline avatarCaroline2008-05-20
awk '{print $2}' 改成 awk '{printf("%s",$2)}'
因為print就像echo會加\n