Bash
在 shell 腳本命令的一部分中使用帶有空格的變數的正確方法是什麼?
如何在 RHEL bash 腳本的 svn 命令中包含空格作為變數的一部分?或者如果以下還有什麼問題,請指教。
SVN URL 變數沒有空格,這部分工作:
svn checkout $svnUrl $checkoutDir --username $username --password $password --non-interactive --depth immediates --no-auth-cache
但是在硬編碼時有效的 SVN 更新命令不能作為變數工作:
updateSubProject="&& svn update --set-depth infinity --no-auth-cache --username $username --password $password --non-interactive" cd project-dir $updateSubProject cd ../another-project $updateSubProject
最好是製作一個功能來做到這一點
updateSubProject() { pushd "$1" svn checkout "$svnUrl" "$checkoutDir" --username "$username" --password "$password" --non-interactive --depth immediates --no-auth-cache popd } updateSubProject project-dir updateSubProject path/to/another-project
這樣您就不會嘗試將程式碼儲存在變數中,並且您將避免很多分詞問題。
您可以嘗試執行儲存在變數中的命令,
eval "$updateSubProject"
因此從變數中刪除雙 & 並執行:
cd project-dir && eval "$updateSubProject"