วิธีการแทนที่คำสั่งด้วยผลลัพธ์ของคำสั่งอื่นใน linux?


0

ฉันต้องการสร้างคำสั่งที่ใช้ผลลัพธ์ของสิ่งอื่นเช่นนี้:

JNLP_FILE='find . -name viewerApplet.jnlp'
cp ${JAR_FILE} ../../sign-jar/$PROFILE/

แต่ฉันไม่รู้วิธีเรียกใช้งานคำสั่ง find เพื่อใช้สำหรับคำสั่ง 'cp'

ความช่วยเหลือใด ๆ

คำตอบ:


2

คุณสามารถใช้สัญลักษณ์ดอลลาร์ตามด้วยคำสั่งในวงเล็บ [ $(<command>)] เพื่อให้เอาต์พุตของคำสั่งนั้นถูกป้อนเข้าสู่บรรทัดรับคำสั่งโดยตรง:

cp $ (ค้นหา. -name viewerApplet.jnlp) ../../sign-jar/$PROFILE/


หรือคุณสามารถใช้ backticks (`):

cp `หา -name viewerApplet.jnlp` ../../sign-jar/$PROFILE/

1
$(command substitution)ไวยากรณ์เป็นที่ต้องการโดยทั่วไปมากกว่า backticks วันนี้
เกล็นแจ็คแมน

@glennjackman ฉันได้แก้ไขโพสต์ของฉันเพื่อแสดงความคิดเห็นของคุณ
bwDraco

2
find . -name viewerApplet.jnlp -exec cp {} ../../sign-jar/$PROFILE/ \;

-exec ให้คุณป้อนผลลัพธ์การค้นหาไปยังคำสั่งอื่น {} ย่อมาจากชื่อของไฟล์ที่พบ โปรดทราบว่าหากพบว่ามีมากกว่าหนึ่งผลมันจะคัดลอกทั้งหมดลงในไดเรกทอรีที่ระบุ (สมมุติว่าคุณมีไฟล์เพียง 1 ไฟล์ที่เรียกว่า viewerApplet.jnlp แต่ exec ก็ทำงานได้เหมือนกันfind . -name *.java -exec cp {} backups/ \;)

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