[問題] bash script 無法做 cp

看板Linux作者 (aa)時間16年前 (2008/05/15 13:26), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/4 (看更多)
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

05/15 15:29, , 1F
awk '{print $2}' 改成 awk '{printf("%s",$2)}'
05/15 15:29, 1F

05/15 15:29, , 2F
因為print就像echo會加\n
05/15 15:29, 2F
文章代碼(AID): #18AycYbo (Linux)
文章代碼(AID): #18AycYbo (Linux)