2016-10-25 19 views
0

私はtestと呼ばれるスクリプトを持っています。引数をとり、バックスラッシュをスラッシュで置き換えようとしています。私は、次のような場合:Bashスクリプト:引数にバックスラッシュ文字を置き換えますか?

#!/bin/bash 

FIRST_ARGUMENT=$1 

echo $FIRST_ARGUMENT | sed 's/\\/\//g' 

そして、私は次のようにそれを使用する:

$ ./test aaa\aa  
aaaaa 

私のバックスラッシュが消えます。それらを保存してsedに置き換える方法はありますか?私は私のエコーの呼び出し内の文字列にパスをハードコーディングすると、のように:として引用'または"を使用し、./testにそれを通過する間

aaa/aa 
+0

を、それは、コマンドラインを処理していますようにバックスラッシュがシェルによって離れて解析されます。あなたはエスケープのためにそれをダブルエスケープして、コマンドの内部で使用するために生き残る必要があります。 –

+0

'./test 'aaa \ aa'' – anubhava

+1

また、[shell variables](http://www.gnu.org/software/bash/manual/)との衝突を避けるため、変数名には小文字を使用することをお勧めします。 bashref.html#シェル変数)はすべてCAPSです – Sundeep

答えて

4

echo 'aaa\aa'| sed 's/\\/\//g' 

私は正しい結果が得られます。以下は

./test 'aaa\aa' 

引用付きと引用符なしコンテンツとの違いを示すための例です。

[email protected]:~$ echo aa\aa 
aaaa # without '\' 
[email protected]:~$ echo "aa\aa" 
aa\aa # with '\' 

も読み:Meaning of backslash

関連する問題