我想自動執行以下svn命令。注意此命令產生我的系統上所期望的結果 - 的Ubuntu 10.04,SVN 1.6.6,bash shell中,在命令行發行時:幫助變量和換行符,並在bash腳本中引用
svn ci -m $'Added new File: newFile.txt\nOrig loc: /etc/networking/newFile.txt' /home/user/svnDir/newFile.txt
我想在bash腳本運行命令,假設文件的原始完整路徑包含在變量$ oFileFull中,文件名在$ oFileName中。該腳本從svn目錄執行。我需要考慮到文件名和或路徑包含空格的可能性。
所以我SHEL腳本中的行可能看起來像:
svn ci -m$'Added new file: ${oFileName}\nOrig loc: ${oFileFull}' ${oFileName}
但我想在執行命令前的變量(可以包含空格)擴展,我無法弄清楚如何做到這一點的同時將svn註釋括在單引號中,這是爲了在subversion註釋日誌中獲得新行而必需的。我拉着我的頭髮試圖弄清楚如何正確引用和組裝這個命令。任何幫助讚賞。
謝謝 - 工作就像一個魅力。 奇怪的是,當試驗和使用echo來顯示輸出時,$ nl變量必須用雙引號而不是單引號來聲明。 單引號適用於svn命令,日誌格式正確。 – Scott 2010-06-07 18:10:56
@Scott:'nl = $'\ n';回聲「一個$ {nl}兩個」'應該工作。在這種情況下,使用'nl = $「\ n」'與'nl =「\ n」'相同,並且需要'echo -e'來解釋文字「\ n」(兩個字符:反斜槓-n),除非你的'echo'版本一直都用'-e'。 「回聲」一個\ nb「'與'echo -e」a \ nb「相比有什麼用處? – 2010-06-07 19:13:29
echo「a \ nb」= a \ nb echo -e「a \ nb」= a在一行後接b在下一行 – Scott 2010-06-07 19:57:01