如何在 bash shell 脚本中的变量中容纳空格?
希望这应该是一个简单的...这是我的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 eval $cmd,而不是普通的 $cmd
Use eval $cmd, instead of plain $cmd
你尝试过逃离这个空间吗?
通常,UNIX shell 不喜欢文件名或文件夹名中使用非标准字符。处理此问题的正常方法是转义有问题的字符。尝试:
注意反斜杠。
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:
Note the backslash.