2016-03-18 16 views
0

変数内に変数を入れようとしましたが、機能しません...どうすればいいですか?UNIX:変数内の変数

DEL=$(find . -type f | sed "s/^.*\///g" | sed -n '/\./p' | sed "s/.*\.//g" | uniq) 
EL=$(${DEL} | tr '\n' ',' | sed 's/,$//') 
+1

試みを試すことができます 'ELは= $(エコー$ {DEL} | trは '\ n' を '' | sedのの/、 $ // ') ' –

+0

これは何かを印刷しますが、まだスペースの間にカンマを入れません。 :) – user3463055

+1

@ user3463055 'echo $ {DEL}'は行のすべての要素を出力します。そのため、trは ''\ n''を' '、''で置き換えることができません。私はあなたが自分の必要とするものを練習することができると思うのですが、あなたの質問に希望する出力は言及していません。 :) –

答えて

1

あなたは

EL=$(tr '\n' ',' <<< "$DEL" | sed 's/,$//') 

または

EL=$(echo "$DEL" | tr '\n' ',' | sed 's/,$//') 
+0

最初に動作します。二重引用符は、 'echo" $ DEL "'を使用すると機能しますが、二重引用符で囲まれていないと、最後に 'tr'の入力に改行が1つだけあり、' sed'が削除されます'tr'が追加する一つのコンマ(これはあまり生産的ではありません)。 –

+0

@JonathanLeffler - これを指摘してくれてありがとう、私はそれを変更しました。 – Ren

+0

YW:シェルはBash(または、ここでは '<<<'の文字列をサポートするシェルでなければならないことに注意してください) - POSIXシェルはそれをサポートしていません。 2番目のシェルはほとんどのシェルで動作します。 –