คำถามติดแท็ก ash

1
หลีกเลี่ยง“ BASH-isms” ในเชลล์สคริปต์
มีเครื่องมือที่คล้ายกับPerl :: Critic หรือไม่ที่จะตรวจสอบเชลล์สคริปต์ของคุณและชี้ให้เห็นข้อบกพร่องปัญหาเกี่ยวกับการพกพาการใช้งานโปรแกรมที่ไม่ได้มาตรฐานโดยไม่มีข้อผิดพลาด ฉันรู้ว่าset -o posixจะปิดใช้งานการใช้งานที่ไม่ใช่ POSIX แต่จะไม่บอกสิ่งที่ฉันต้องการทราบเช่นอาร์เรย์เชลล์ดัชนี zsh เริ่มต้นที่ 1 และทุบตีจาก 0 และเถ้าไม่สนับสนุนอาร์เรย์เลย
37 bash  shell  zsh  ash 


1
เปอร์เซ็นต์ในตัวแปรสภาพแวดล้อม $ PATH
$ PATH ของฉันมีลักษณะดังนี้: /home/torbjorr/deployed/vector/x86_64-GNU%2fLinux:/home/torbjorr/deployed/typewriter/x86_64-GNU%2fLinux:/home/torbjorr/deployed/mustudio/x86_64-GNU%2fLinux:/home/torbjorr/deployed/mathext/x86_64-GNU%2fLinux:/home/torbjorr/deployed/doxymax/x86_64-GNU%2fLinux:/home/torbjorr/deployed/c2tex/x86_64-GNU%2fLinux:/home/torbjorr/deployed/x86_64-GNU%2fLinux/wand:/home/torbjorr/deployed/x86_64-GNU%2fLinux/spellesc:/home/torbjorr/deployed/x86_64-GNU%2fLinux/projinit:/home/torbjorr/deployed/x86_64-GNU%2fLinux/herbs:/home/torbjorr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games ในทุบตีฉันสามารถไม่มีปัญหาเรียกคันตั้งอยู่ใน /home/torbjorr/deployed/x86_64-GNU%2fLinux/wand ชอบ $ wand (i) Mål från "main.cpp" har registrerats (i) Skapar katalog "__wand_targets_dbg" (i) Kör g++ "main.cpp" -fpic -L"/home/torbjorr/deployed" -g -Wall -std=c++11 -I"/home/torbjorr/deployed" -o "__wand_targets_dbg/cb-template อย่างไรก็ตามในโหมดความเข้ากันได้ของเชลล์ bourne ไม่พบไม้กายสิทธิ์: $ wand sh: 2: wand: not found ดูเหมือนว่าปัญหาคือเครื่องหมาย% ในพา ธ เหล่านี้ เครื่องหมายนี้ได้รับการเพิ่มโดยการเข้ารหัส URL เพื่อให้สามารถใช้ชื่อ "GNU / …
16 shell  path  dash  ash 

2
Dash, Ash และ sh รองรับสคริปต์ได้ 100% หรือไม่
ฉันต้องการทราบว่าสคริปต์ที่เขียนขึ้นสำหรับเส้นประเถ้าและ sh เข้ากันได้ 100% หรือไม่ มีฟีเจอร์ที่เพิ่มเข้ามาเพื่อขีดหรือเถ้าหรือการเปลี่ยนแปลงทางไวยากรณ์หรือไม่? จากสิ่งที่ฉันได้ยินเถ้าเป็นลูกหลานของดวลจุดโทษโดยตรง

3
วิธีการพอร์ตไปยังสไตล์ทุบตีเพื่อเถ้า?
ashบางเวลาที่ผ่านมาฉันได้เขียนสคริปต์ทุบตีซึ่งขณะนี้ควรจะสามารถที่จะทำงานในสภาพแวดล้อมที่มี ในbashมันเป็นเหมือน: services=( "service1.service" "service2.service" "service3.service" ) for service in "${services[@]}" do START $service done START() { echo "Starting "$1 systemctl start $1 } ในความเป็นจริงมีบริการอยู่ 40 รายการและฉันต้องการทำให้การเปลี่ยนแปลงนี้ไม่เจ็บปวดและสะอาดเท่าที่จะเป็นไปได้ มีการใช้bashisms เสมอ ตอนนี้ฉันกำลังเหน็บแนมกับงานเพื่อให้สคริปต์พกพาได้มากขึ้น สำหรับเหตุผลในการพกพาอาจเป็นเรื่องดีที่จะมีashโซลูชันที่บริสุทธิ์ แต่เนื่องจากฉันมีความแข็งแกร่งbusyboxในการจัดการของฉันฉันอาจเสียสละบางพกพา เฉพาะในกรณีที่ความสามารถในการอ่านดีขึ้นมากเนื่องจากสคริปต์ "clean" เป็นเมตริกเช่นกัน ในกรณีนี้โซลูชันแบบพกพาและสะอาดจะเป็นอย่างไร
13 bash  shell  array  ash 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.