1

.bashrc でこのようなものをセットアップしたいと思います

export p1=`eval echo ~/projects/customer name/project name`
export p2=`eval echo ~/projects/customerb name/project name`

スペースが原因で入力cd $p1に失敗し、ディレクトリが見つからないという問題が発生します。

cd "$p1"入力(変数の周りのスピーチマーク付き)が機能することを認識しています。

このようなことができるように、変数を正しくセットアップするにはどうすればよいですか...

cd $p2
cp $p1/file $p2/
open $p1/lib 

...スピーチマークを毎回入力せずに?

前もってありがとう、
ニック

4

2 に答える 2

3

これは良い考えではありません。美的に満足できる動作を得るには、ハックに頼るのではなく、シェルをそのまま扱うことを学ぶ必要があります。

IFSつまり、代入時に変数からスペースを削除することで、必要な効果を得ることができますp1

サンプル:

IFS= p1="/path with/some/spaces in/it"
ls -l $p1

言うまでもありませんが、明確にするために、設定IFSを解除してそのままにしておくべきではありません。ほとんどの場合、結果は期待どおりにはなりません。これは、特定のコマンドに対してのみ行う必要があります。

また、探している用語は「スピーチマーク」ではなく「二重引用符」です。グーグルで検索したり、質問したり、ドキュメントを検索したりするときは、一般的に正しい専門用語を使用することをお勧めします。

編集:

コピペしやすいバージョン:

IFS= export p1="$HOME/projects/customer name/project name"
cd $p1
于 2012-07-09T10:45:01.687 に答える
-2

引用符を配置する関数を作成することで、これを簡単に行うことができます。

cdd(){
    command cd "$*"
}

今、あなたがタイプすると

ps1="some path /with lots /of spaces/"
cdd $ps1

これは確かに望ましい動作を示します。

(他のコメントに示されているように)のパス名にスペース以外の特殊文字が含まれている場合、これは意図したとおりに機能しない可能性があることに注意してください。使用する前にいつ使用する かを知ってください。$p1

于 2012-07-09T10:37:56.723 に答える