2017-01-03 14 views
0

さてさて、私は機能を実行していますし、これは私が受け取る出力されます:のsed:|:そのようなファイルやディレクトリ

sed: |: No such file or directory 

4回。ここで

のsedコマンドは、関数の中で走っている:

sed -i "/${1} {/,/}/d" "$7" 
sed -i "s/^${3}/${3}\n\n ${1} {\n path \/system\/lib\/soundfx\/boutique\/${4}\n }/g" "$7" 
sed -i "/${8} {/,/}/d" "$7" 
sed -i "s/^${6}/${6}\n\n ${8} {\n library ${1}\n uuid ${5}\n }/g" "$7" 

私は変数は、正しく実装されていないグーグルとstackoverflowing後、私は二重引用符や括弧を追加しましたが、でも、問題を修正しなかったと信じています。関数へ

例入力:上記の入力に使用

function $DOLSO "$SYSTEM/etc/$AEC" $DOLBYLIBTXT $FILE $DOLBYUUID $DOLBYEFFTXT "$ETC/$AEC" $DOLSO2 

変数:

DOLBYLIBTXT="# Dolby Laboratories, Inc. | www.dolby.com | Library" 
DOLBYEFFTXT="# Dolby Laboratories, Inc. | www.dolby.com | Effect" 
DOLBYUUID=9d4921da-8225-4f29-aefa-39537a04bcaa 
DOLSO=ds 
DOLSO2=dsplus 
FILE=libdseffect.so 
SYSTEM=/system 
ETC=$SYS/etc 

及びSYS=/system又は/system/system(デバイスに依存)

AEC=audio_effects.conf 

IはSEDを追加する必要がありますコマンドは変数なしで動作します。例:

sed -i '/ds {/,/}/d' /system/etc/audio_effects.conf 

答えて

4

私はあなたの関数の呼び出しで他の引数を二重引用符で囲む必要があります。

function "$DOLSO" "$SYSTEM/etc/$AEC" "$DOLBYLIBTXT" "$FILE" "$DOLBYUUID" "$DOLBYEFFTXT" "$ETC/$AEC" "$DOLSO2" 

あなたは、このようにそれらを引用していない、あなたが効果的に

function ds "/system/etc/audio_effects.conf" # Dolby Laboratories, Inc. | www.dolby.com | Library libdseffect.so 9d4921da-8225-4f29-aefa-39537a04bcaa # Dolby Laboratories, Inc. | www.dolby.com | Effect "/system/etc/audio_effects.conf" dsplus 

を実行しているし、あなたが引数を集計場合、関数が受け取る場合:

$1: ds 
$2: /system/etc/audio_effects.conf 
$3: # 
$4: Dolby 
$5: Laboratories, 
$6: Inc. 
$7: | 
$8: www.dolby.com 

などを。 "$ DOLBYLIBTXT"の使用を引用するなどして解決します。

+0

あなたはアップヴォートに値します、悲しいことに私はあなたに1つを与えることはできません:( –

関連する問題