看板 Linux 關於我們 聯絡資訊
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
Jerr:awk '{print $2}' 改成 awk '{printf("%s",$2)}' 05/15 15:29
Jerr:因為print就像echo會加\n 05/15 15:29