2016-03-18 9 views
0

Ich versuche nur Variable in Variable zu setzen, aber es funktioniert nicht ... Wie kann ich es beheben?UNIX: variable interne Variable

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

try 'EL = $ $ (echo {DEL} | tr '\ n' '' | sed‚s /, $ // ') ' –

+0

gut ... es druckt etwas, aber immer noch kein Komma zwischen dem Raum. :) – user3463055

+1

@ user3463055 'echo $ {DEL}' druckt alle Elemente in einer Zeile aus, deshalb kann tr '' n'' nicht mit '','' ersetzen. Ich denke, du kannst selbst trainieren, was du brauchst, außerdem hast du die gewünschte Ausgabe in deiner Frage nicht erwähnt. :) –

Antwort

1

können Sie versuchen,

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

oder

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

Die erste wird funktionieren. Die zweite würde funktionieren, wenn Sie 'echo" $ DEL "' verwenden, aber wie geschrieben (ohne Anführungszeichen), würde es nur eine neue Zeile in der Eingabe von 'tr' geben, genau am Ende, und die' sed' würde entfernt werden das eine Komma, das "tr" hinzufügt (was wirklich nicht sehr produktiv ist). –

+0

@JonathanLeffler - Danke, dass du das aufzeigst, ich habe es geändert. – Ren

+0

YW: Ich hätte auch notieren müssen, dass die Shell Bash sein muss (oder eine Shell, die hier unterstützt - Strings mit '<<<' - POSIX-Shells unterstützen das nicht). Die zweite funktioniert mit den meisten Shells. –

Verwandte Themen