มันเงียบน่าเบื่อที่จะแปลงเชลล์สคริปต์เป็นไฟล์แบทช์ มีวิธีการดำเนินการโดยอัตโนมัติและง่ายดาย. sh เพื่อ. bat การแปลงหรือในทางกลับกัน?
มันเงียบน่าเบื่อที่จะแปลงเชลล์สคริปต์เป็นไฟล์แบทช์ มีวิธีการดำเนินการโดยอัตโนมัติและง่ายดาย. sh เพื่อ. bat การแปลงหรือในทางกลับกัน?
คำตอบ:
ฉันสงสัยอย่างจริงจัง แม่นยำเพราะเป็นเรื่องน่าเบื่อที่ต้องทำหรือแม่นยำมากขึ้นเพราะสาเหตุที่ทำให้มันน่าเบื่อ ระบบต่าง ๆ ที่เกี่ยวข้องกับซอฟต์แวร์ต่างกันโดยสิ้นเชิง
มันไม่ได้เป็นเพียงเรื่องของการเพิ่มหรือลบ #!
บรรทัดที่ด้านบน รับบรรทัดนี้จากเชลล์สคริปต์ที่ฉันเขียน
STREAM_FROM=$($ZFS list -t snapshot ${BACKUP_TARGET_FS} -H -o name -r | grep '@backup_' | tail -n 1 | cut -d '@' -f 2)
(ใช่อาจมีวิธีที่มีประสิทธิภาพมากกว่าการทำท่อจำนวนหนึ่ง แต่นั่นอยู่ข้างจุดสคริปต์ที่มีปัญหาไม่ต้องการประสิทธิภาพที่เหนือกว่า) นี่คือการกำหนดตัวแปรการขยายนิพจน์ subshell การเรียกใช้คำสั่งโดย การขยายตัวของตัวแปรสภาพแวดล้อม, การขยายตัวแปรสภาพแวดล้อม, ท่อ, grep
, tail
และ cut
รีดทั้งหมดเป็นคำสั่งเดียว เพื่อที่จะแปลงได้อย่างแม่นยำแม้แต่คำสั่งเดียวนี้คุณจำเป็นต้องรู้วิธีการทำงานทั้งหมดและความหมายที่แน่นอนของตัวเลือกต่างๆไปยังยูทิลิตี้มาตรฐานที่เรียกใช้และวิธีการสร้างลักษณะการทำงานบนระบบเป้าหมายอีกครั้ง
สมมติว่าคุณมียูทิลิตี้ ZFS ติดตั้งอยู่ในทั้งสองระบบ (ดังนั้นเราจึงไม่ต้องกังวลกับส่วนนั้น) คุณจะเป็นอย่างไร โดยอัตโนมัติ แปลงไฟล์นี้เป็นชุดคำสั่งไฟล์ Windows หรือชุดคำสั่งหรือไม่ ฉันขอยืนยันว่าถ้าคุณไม่สามารถทำอะไรบางอย่างที่คล้ายกับการแก้ปัญหา ปัญหาการหยุดชะงัก คุณไม่สามารถเขียนตัวแปลงทั่วไปเช่นที่คุณกำลังมองหาได้อย่างชัดเจน แตกต่างจากการแปลภาษาธรรมชาติด้วยพฤติกรรมของโปรแกรมคอมพิวเตอร์ "ใกล้" กับของต้นฉบับไม่ได้อยู่ใกล้ดีพอ: อะไรที่ขาดความสมบูรณ์แบบเป็นข้อบกพร่อง
หรือรับงานสแกนที่ฉันทำเมื่อวันก่อน (ไม่ใช่สคริปต์ แต่เป็นไปได้อย่างง่ายดายฉันแค่พิมพ์มันลงในเทอร์มินัล ฉันลงเอยด้วยบางสิ่งที่ไม่เหมือนดังต่อไปนี้:
for n in $(seq 10 66); do scanimage --button-controlled=yes -x 180 -y 200 --mode Gray --format=tiff > scan${n}.tmp && convert scan${n}.tmp scan${n}.png && \rm scan${n}.tmp; done
นี่เป็นตัวอย่างที่ซับซ้อนเนื่องจากมีตัวเลือก - ควบคุมโดยปุ่ม แบ็กเอนด์ ไม่ใช่โดย scanimage
(SANE) นั้นเอง ดังนั้นเครื่องมือในการแปลงไลเนอร์ตัวนี้จะต้องรู้เกี่ยวกับตัวเลือกทุกตัวที่แบ็กเอนด์ของ SANE และตัวสำรองในระบบเป้าหมาย ชัดเจนไม่เป็นไปได้และอาจไม่ได้ เป็นไปได้ .
แม้แต่เชลล์สคริปธรรมดาอย่างแท้จริงที่ทำซ้ำเฉพาะชุดไฟล์เท่านั้นก็ไม่น่าที่จะแปลงได้โดยอัตโนมัติ และสคริปต์ที่เรียบง่ายเช่นนี้มีอยู่น้อยและอยู่ไกล
นอกจากนี้ "เชลล์สคริปต์" ไม่ใช่สิ่งที่เป็นเนื้อเดียวกัน: สิ่งที่จำเป็นในการแปลงสคริปต์เชลล์ทุบตีแตกต่างจากสิ่งที่จำเป็นในการแปลงเชลล์สคริปต์ zsh แตกต่างจากสิ่งที่จำเป็นในการแปลงเชลล์สคริปต์ที่เขียนด้วย Perl ในหลายกรณีอาจไม่มีแม้แต่คู่ที่ตรงกันโดยตรงกับไวยากรณ์ต่างๆการแปลที่ซับซ้อนยิ่งขึ้น