1

同様の問題があるいくつかの投稿を見てきましたが、自分のニーズに合うようにいくつかの解決策を推定することはできないので、ここにいます.

単純なシェル スクリプトがあり、名前にスペースが含まれるディレクトリに cd する必要があります。ディレクトリは毎回同じ場所にあります/home/user/topleveldirが ( )、ディレクトリ名自体はマシン固有のものであり、スペースが含まれています ( /home/user/topleveldir/{machine1}\ dir//home/user/topleveldir/{machine2}\ dir/)。スクリプトでその一意のディレクトリに cd する最良の方法について混乱しています。

4

2 に答える 2

2

次のようなものが機能しない理由がわかりません

baseDir=/home/user/topleveldir
machine=<whatever machine name>
cd "$baseDir/$machine dir"
于 2012-09-14T23:30:06.550 に答える
1

シェルがそれが引数の一部であり、引数間の区切り文字ではないことを認識できるように、そのスペース文字を引用符で囲む必要があります。

スクリプトのコマンド ラインに直接ディレクトリがある場合は、一重引用符を使用します。一重引用符の間では、一重引用符を除くすべての文字が文字どおりに解釈されます。

cd '/home/user/topleveldir/darkstar dir/'

ディレクトリ名が変数に由来する場合は、コマンド置換を二重引用符で囲みます。コマンド置換は常に二重引用符で囲ん"$foo"ください。引用符を省略すると、変数の値は個別の単語に分割され、グロブ パターンとして解釈されます — これはほとんど望ましくありません。

directory_name='darkstar dir'
…
cd "/home/user/topleveldir/$directory_name"
于 2012-09-14T23:33:20.890 に答える