Xargs ile tanımlı fonksiyon nasıl kullanılır


16

Bu benim kodum

#!/bin/bash

showword() {
  echo $1
}

echo This is a sample message | xargs -d' ' -t -n1 -P2 showword

Bu nedenle showword, işleve parametre olarak ilettiğiniz her dizeyi yansıtan bir işlevim var .

Sonra xargsişlevi çağırmak ve bir kerede bir kelime işleve geçmeye çalışıyorum ve işlevin 2 kopyasını paralel olarak çalıştırın. Çalışmayan şey xargsişlevi tanımıyor. Yapmaya çalıştığım şeyi nasıl başarabilirim, xargs'ın işlevle çalışmasını nasıl sağlayabilirim showword?


Yanıtlar:


25

İşlevi dışa aktarmayı ve ardından alt kabukta çağırmayı deneyin:

showword() {
  echo $1
}

export -f showword
echo This is a sample message | xargs -d' ' -t -n1 -P2 bash -c 'showword "$@"' _

Teşekkürler, ama yukarıdaki cevabım hakkında ne düşünüyorsun?
GMaster

@FazleA .: Bu konuda yorum yapmak istiyorum, ama burada sorduğunuz için burada cevap vereceğim. Bu herhangi bir parametre geçirmediğiniz için işe yaramaz showword.
cuonglm

2
Bir soru daha, izleyen _ neden gereklidir? Xargs'ın başka bir şey işlemesini durdurmak mı?
GMaster


İhracat yaptığımda "ihracat: Yasadışı seçenek -f" alıyorum
Sagar Chamling
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.