3

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

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

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

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

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

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

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

4

2 回答 2

4

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

于 2011-02-10T00:36:37.797 回答
1

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

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

注意反斜杠。

于 2011-02-10T00:32:03.197 回答