如何在 bash shell 脚本中的变量中容纳空格?

发布于 2024-10-17 03:04:57 字数 440 浏览 7 评论 0原文

希望这应该是一个简单的...这是我的 test.sh 文件:

#!/bin/bash
patch_file="/home/my dir/vtk.patch"
cmd="svn up \"$patch_file\""
$cmd

注意“my dir”中的空格。当我执行它时,

$ ./test.sh 
Skipped '"/home/my'
Skipped 'dir/vtk.patch"'

我不知道如何容纳变量中的空间并仍然执行命令。但是在 bash shell 上执行以下命令是没有问题的。

$ svn up "/home/my dir/vtk.patch"   #WORKS!!!

任何建议将不胜感激!我在 Windows 上使用 cygwin 的 bash。

Hopefully this should be a simple one... Here is my test.sh file:

#!/bin/bash
patch_file="/home/my dir/vtk.patch"
cmd="svn up \"$patch_file\""
$cmd

Note the space in "my dir". When I execute it,

$ ./test.sh 
Skipped '"/home/my'
Skipped 'dir/vtk.patch"'

I have no idea how to accommodate the space in the variable and still execute the command. But executing this the following on the bash shell works without problem.

$ svn up "/home/my dir/vtk.patch"   #WORKS!!!

Any suggestions will be greatly appreciated! I am using the bash from cygwin on windows.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怂人 2024-10-24 03:04:57

使用 eval $cmd,而不是普通的 $cmd

Use eval $cmd, instead of plain $cmd

梦里南柯 2024-10-24 03:04:57

你尝试过逃离这个空间吗?
通常,UNIX shell 不喜欢文件名或文件夹名中使用非标准字符。处理此问题的正常方法是转义有问题的字符。尝试:

patch_file="/home/my\ dir/vtk.patch"

注意反斜杠。

Did you try escaping the space?

As a rule UNIX shells don't like non-standard characters in file names or folder names. The normal way of handling this is to escape the offending character. Try:

patch_file="/home/my\ dir/vtk.patch"

Note the backslash.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文