2016-03-18 24 views
0

Sadece değişken iç değişkenleri koymaya çalışıyorum ama işe yaramıyor ... Bunu nasıl düzeltebilirim?UNIX: değişken iç değişken

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

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

+0

iyi ... bir şey yazdırıyor, ancak yine de boşluk arasında virgül koymuyor. :) – user3463055

+1

@ user3463055 'echo $ {DEL}' bir satırdaki tüm öğeleri basar, bu yüzden '' n '' '' ile 'tr 'değiştiremezsiniz. İhtiyacınız olan şeyi kendi başınıza yapabileceğinizi düşünüyorum, ayrıca sorunuzda istenen çıktıdan bahsetmediniz. :) –

cevap

1

Sen

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

veya

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

İlk çalışacak. İkincisi eğer "echo" $ DEL "' yi kullanırsanız, fakat yazdıkça (çift tırnak işareti olmadan) çalışır, girişte "tr", satırın sonuna doğru sadece bir yeni satır olur ve "sed" çıkarırdı tr 'ekleyen tek bir virgül (ki bu gerçekten çok üretken değil). –

+0

@JonathanLeffler - Bunu işaretlediğiniz için teşekkür ettim. – Ren

+0

YW: Kabuğun Bash olması gerektiğini de belirtmeliydim (ya da '<<<' ile dizeleri destekleyen bir kabuk - POSIX kabukları bunu desteklemiyor). İkinci çoğu kabukları ile çalışır. –