Bash

在 shell 腳本命令的一部分中使用帶有空格的變數的正確方法是什麼?

  • June 7, 2016

如何在 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"

引用自:https://unix.stackexchange.com/questions/288151