วิธีการใช้ฟังก์ชั่นที่กำหนดไว้ด้วย xargs


16

นี่คือรหัสของฉัน

#!/bin/bash

showword() {
  echo $1
}

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

ดังนั้นฉันจึงมีฟังก์ชั่นshowwordที่สะท้อนสิ่งที่คุณส่งผ่านสายเป็นพารามิเตอร์ไปยังฟังก์ชั่น

จากนั้นฉันได้xargsลองเรียกใช้ฟังก์ชั่นแล้วส่งต่อทีละหนึ่งคำไปยังฟังก์ชั่นแล้วเรียกใช้ฟังก์ชัน 2 ชุดพร้อมกัน สิ่งที่ไม่ทำงานคือxargsไม่รู้จักฟังก์ชั่น ฉันจะบรรลุสิ่งที่ฉันพยายามทำได้อย่างไรฉันจะทำให้ xargs ทำงานกับฟังก์ชันได้showwordอย่างไร


ยังกล่าวถึงในstackoverflow.com/questions/11003418/ …
Joshua Goldberg

คำตอบ:


25

ลองส่งออกฟังก์ชั่นจากนั้นเรียกใช้เป็น subshell:

showword() {
  echo $1
}

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

ขอบคุณ แต่คุณคิดอย่างไรกับคำตอบของฉันด้านบน
GMaster

@FazleA: ฉันตั้งใจจะให้ความเห็นเกี่ยวกับเรื่องนี้ แต่เพราะคุณถามที่นี่ฉันจะตอบที่นี่ ที่จะไม่ทำงานตั้งแต่เมื่อคุณไม่ผ่านพารามิเตอร์ใด ๆ showwordที่จะ
cuonglm

2
อีกหนึ่งคำถามทำไมต้องมีการต่อท้าย _ มันคือการหยุด xargs จากการประมวลผลสิ่งอื่นใด?
GMaster


ฉันได้รับ "ส่งออก: ตัวเลือกที่ผิดกฎหมาย -f" เมื่อฉันส่งออก -f
Sagar Chamling
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.