3

うまくいけば、これは単純なものでなければなりません...これが私のtest.shファイルです:

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

「mydir」のスペースに注意してください。実行すると、

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

変数のスペースに対応し、コマンドを実行する方法がわかりません。しかし、これをbashシェルで実行すると、問題なく機能します。

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

どんな提案でも大歓迎です!私はWindowsでcygwinのbashを使用しています。

4

2 に答える 2

4

通常の $cmd の代わりに eval $cmd を使用する

于 2011-02-10T00:36:37.797 に答える
1

スペースから脱出しようとしましたか?
原則として、UNIX シェルは、ファイル名やフォルダー名に標準外の文字を使用することを好みません。これを処理する通常の方法は、問題のある文字をエスケープすることです。試す:

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

バックスラッシュに注意してください。

于 2011-02-10T00:32:03.197 に答える