Yanıtlar:
cat foo.txt | xargs -J % -n 1 sh -c "echo % | bar.sh"
Zor kısmı xargs örtülü alt kabuk çağırma gerçekleştirir. Burada sh açıkça çağrıldı ve boru ana konveyörün bir parçası haline gelmiyor
cat foo.bar | wc -l
vecat foo.bar | xargs -J % -n 1 sh -c "echo % | wc -l"
-I
yerine demek istiyorsun -J
; -J
xargs için seçenek yok
xargs
var -J
eşdeğerdir seçeneği -i
linuxxargs
-J
-I
Tüm foo.txt satırlarını işlemek istiyorsanız bir döngü kullanmanız gerekir. &
Süreci arka plana koymak için kullanın
while read line; do
echo $line | bar.sh &
done < foo.txt
Girişinizde boşluklar varsa, dahili alan ayırıcısını yeni satıra ayarlayın
# save the field separator
OLD_IFS=$IFS
# new field separator, the end of line
IFS=$'\n'
for line in $(cat foo.txt) ; do
echo $line | bar.sh &
done
# restore default field separator
IFS=$OLD_IFS
xargs
kullanılan OP seçenekleri baktım .