2017-05-04 15 views
2

どのようにして.bashrcのbash変数にスペースを含むパスを追加できますか? 私はパス ため.bashrcの中にいくつかの変数を格納したいと私は実行したときに、私は...私は「の間にそれを追加しようとした」またはそれがbash変数に空白を含むパスを追加するには

games=/run/media/mohamedRadwan/games\ moves # this doesn't work 
games='/run/media/mohamedRadwan/games moves' # or this 
games="/run/media/mohamedRadwan/games moves" # or this 

を助けるdidntの\エスケープ文字を使用することでスペースを含むパスに直面:

mount $games 

...それはそれだけで/run/media/mohamedRadwan/games

をマウントしようとしていることを示すエラーがスローされます...しかし、私はecho $gamesを実行すると、それは完全な値を示し、/run/media/mohamedRadwan/games moves

どうすればこの問題を解決できますか?

+1

いつも常に変数の参照を引用します: 'echo" $ game "' – bishop

+0

(...変数にパターンや正規表現が含まれていて比較の右側にある場合を除いて '=〜 '' '[[]]';)) –

+0

@BenjaminW: '' [''で '' ''は必要ありません。 – choroba

答えて

1
mount /dev/sda9 "$games" 

を分割される引数を防ぐことができます取り巻く

は、常に変数デリファレンスを引用します。それ以外の場合、シェルは変数の値のスペースを複数の値を区切るスペースとして混乱させます。

+1

非常に感謝の男:) –

1

変数にスペースが含まれていると、変数展開とワード分割によって多くの引数が生成されます。echoコマンドはすべての引数を表示しますが、他のプログラムや関数は引数を別の方法で処理できます。前述のように二重引用符を持つ変数が

printf "'%s'\n" $games 

printf "'%s'\n" "$games" 
+0

私はfedoraで.bashrcファイルに書きたいので、コマンド ** mount $ g ames ** –

関連する問題