Metin dosyası satırlarına göre virgülle ayrılmış komut satırı parametrelerini belirtme


1

Gibi bir komut çalıştırmak istiyorum:

command argument --parameter=param1,param2,param3

param1, param2, param3, her biri bir satırda params.txt dosyasından gelen herhangi bir sayıda parametre olabilir.

İle parametrelerin doğru bir listesini görmek oluşturabilirsiniz

echo $(cat common.modules) | tr " " ","

Ama deniyorum

command argument --parameter=$(cat params.txt) | tr " " ","

ve bariz değişkenleri başarısız oluyor, muhtemelen işe yaraması için böyle bir şey bulamıyorum:

echo $($(cat params.txt) | tr " " ",")

Herhangi bir yardım çok takdir etmek.


Parametreler listenizin yeni çizgilerle ayrıldığını mı söylüyorsunuz? Öyleyse, neden ayırıcı karakter olarak boşluk kullanıyorsunuz tr?
Mikel,

Yanıtlar:


1

Ne dersin

command argument --parameter=$(tr '\n' ',' < params.txt)

Zarif; ama belki John1024'ün kedi temelli çözümünün evrenselliği olmadan?
Jonathan,

@Jonathan Neden daha az evrensel?
Michael Vehrs,

Kedi posix uyumluluğu korunması hakkında yaptığı yorum hakkında merak ediyordum; İlgili konuları anlamıyorum. Sizinkinin aynı derecede evrenselliği varsa, onun yerine kabul edeceğim.
Jonathan,

Bu çözüm aynı zamanda POSIX. (Benim catyorumum $(cat params.txt)vs ile ilgiliydi $(< params.txt).) Çözümüm, orijinal yaklaşımınızın davranışını koruyor: boşlukla ayrılmış ve yeni satırla ayrılmış öğeler arasına virgül koyuyor params.txtve sonunda virgül eklemiyor. Orijinal yaklaşımınızın @Jonathan özellikleri önemli değilse , o zaman bu daha basit bir çözümdür.
John1024,

Teşekkürler, çok net. Bu özellikler önemli olmadığından, kabul edilen cevabı vereceğim. Yardımlarınız çok takdir edildi.
Jonathan,

3

Bu komuta sorudan bakalım:

command argument --parameter=$(cat params.txt) | tr " " ","

Bu komutu çalıştırır command argument --parameter=$(cat params.txt)ve çıkışını iletir tr " " ",". İhtiyacın olan bu değildi.

Deneyin:

command argument --parameter="$(echo $(cat params.txt) | tr " " "," )"

Burada, echo $(cat params.txt)kelimelerin ayrılmasının içeriği üzerinde yapılmasına neden olur params.txt. Bu, tüm parametrelerin boşlukla ayrılmasına neden olur. Sonra tr " " ","boşlukları virgüllerle değiştirir.

catYukarıdakileri kullanarak POSIX uyumluluğunu koruduğumuzu unutmayın. Bu, örneğin, bu komutun varsayılan kabuk altında, /bin/shUbuntu ve Debian ve benzeri sistemlerde çalışacağı anlamına gelir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.