คุณควรใช้#! /bin/sh
เท่านั้น
คุณไม่ควรใช้ส่วนขยาย bash (หรือ zsh หรือ fish หรือ ... ) ในเชลล์สคริปต์
คุณควรเท่านั้นที่เคยเขียนสคริปต์เปลือกที่ทำงานร่วมกับใด ๆการดำเนินงานของภาษาเปลือก (รวมทั้งหมด "ยูทิลิตี้โปรแกรม" ที่ไปพร้อมกับเปลือกของตัวเอง) วันนี้คุณอาจใช้POSIX.1-2001 ( ไม่ใช่ -2008) เป็นสิทธิ์สำหรับสิ่งที่เชลล์และยูทิลิตีสามารถใช้งานได้ แต่โปรดทราบว่าวันหนึ่งคุณอาจถูกเรียกให้พอร์ตสคริปต์ของคุณไปยังระบบเดิม (เช่น Solaris หรือ AIX) ซึ่งเชลล์และยูทิลิตีถูกแช่แข็งประมาณปี 1992
อะไรนะ!
ใช่อย่างจริงจัง
นี่คือสิ่งที่: เชลล์เป็นภาษาการเขียนโปรแกรมที่แย่มาก สิ่งเดียวที่มันเกิดขึ้นคือนั่น/bin/sh
คือตัวแปลสคริปต์เพียงตัวเดียวเท่านั้นที่รับประกันการติดตั้ง Unix ทุกอัน
นี่คือสิ่งอื่น ๆ : ทวนของแกน Perl 5 ล่ามบางคน ( /usr/bin/perl
) เป็นมากขึ้นมีแนวโน้มที่จะมีอยู่ในการติดตั้งระบบปฏิบัติการยูนิกซ์สุ่มเลือกกว่า(/(usr|opt)(/(local|sfw|pkg)?)?/bin/bash
คือ ภาษาสคริปต์ที่ดีอื่น ๆ (Python, Ruby, node.js เป็นต้น) - ฉันจะใส่ PHP และ Tcl ในประเภทนั้นเมื่อเปรียบเทียบกับเชลล์) นอกจากนี้ยังมีคร่าวๆเช่น bash และ shell ที่ขยายเพิ่มอื่น ๆ
ดังนั้นหากคุณมีตัวเลือกในการเขียนสคริปต์ทุบตีคุณมีตัวเลือกในการใช้ภาษาการเขียนโปรแกรมที่ไม่น่ากลัวแทน
ตอนนี้เชลล์สคริปต์แบบธรรมดาชนิดที่เพิ่งรันโปรแกรมสองสามตัวตามลำดับจากงาน cron หรือบางอย่างไม่มีอะไรผิดปกติที่ปล่อยให้มันเป็นเชลล์สคริปต์ แต่สคริปต์เชลล์แบบง่ายไม่ต้องการอาร์เรย์หรือฟังก์ชั่นหรือ[[
แม้กระทั่ง และคุณควรเขียนสคริปต์เชลล์ที่ซับซ้อนเฉพาะเมื่อคุณไม่มีทางเลือกอื่น ตัวอย่างเช่นสคริปต์ Autoconf ยังคงเป็นสคริปต์เชลล์อย่างถูกต้อง แต่สคริปต์เหล่านั้นมีการทำงานในทุกชาติ/bin/sh
ที่เกี่ยวข้องกับโปรแกรมที่มีการกำหนดค่า และนั่นหมายความว่าพวกเขาไม่สามารถใช้ส่วนขยายใด ๆ ได้ คุณอาจจะไม่ได้มีการดูแลเกี่ยวกับกรรมสิทธิ์ Unixes เก่าวันนี้ แต่คุณอาจควรดูแลเกี่ยวกับปัจจุบัน BSDs เปิดแหล่งที่มาบางส่วนที่ไม่ได้ติดตั้งbash
busybox
โดยค่าเริ่มต้นและสภาพแวดล้อมที่ให้คุณเพียงเปลือกที่น้อยที่สุดที่ฝังตัวและ
โดยสรุปเมื่อคุณพบว่าตัวเองต้องการคุณสมบัติที่ไม่มีในภาษาพกพาเชลล์นั่นเป็นสัญญาณว่าสคริปต์นั้นซับซ้อนเกินกว่าที่จะคงเชลล์สคริปต์ไว้ได้ เขียนมันเป็นภาษาที่ดีขึ้นแทน
bash
ฟังก์ชั่นและไวยากรณ์มากกว่าsh
ฟังก์ชั่นและไวยากรณ์