我在 Windows 下的 MinGW shell 中面临下一个问题。我在我的/etc/profile
表达方式:
export GIT_SSH="/c/Program Files/TortoiseGit/bin/TortoisePlink.exe"
当我使用时这不起作用git fetch
在本地存储库上。但如果我这样做(旧的 DOS 方式),它会起作用:
export GIT_SSH="/c/Progra~1/TortoiseGit/bin/TortoisePlink.exe"
我的问题是:
如何在变量中使用空格使其工作?
为了测试目的,你可以模拟这样的东西(任何例子都很好):
export VAR="/c/Program Files/TortoiseGit/bin/TortoisePlink.exe"
# and try to execute like this
$VAR
有没有解决方案(除了前面提到的)?
像这样执行它:"$VAR"
。这是 shell 脚本中最重要的问题之一,因为字符串总是按字面意思替换,并且任何包含的空格都被视为标记分隔符而不是字符串的字符。将变量替换为运行时粘贴的一种代码。
当你写作时到底发生了什么$VAR
是 shell 尝试执行二进制文件/c/Program
有第一个参数Files/TortoiseGit/bin/TortoisePlink.exe
.
我通过在特定输入的大型 shell 脚本中遇到奇怪的语法错误而艰难地学到了这一点。如果运行时输入包含特殊字符,我能想到的其他语言都不会抱怨语法错误 - 但这就是 shell 脚本的本质,因为像 bash 和 sh 这样的命令解释器会逐行解释代码。
每当您希望字符串包含空格并且不想将其视为单独的标记时,请将其用双引号引起来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)