แนวทางปฏิบัติที่ดีที่สุดในการสร้าง Shell Script ใน GNU / Linux - ตอนที่ 2

ก่อนอื่นก่อนอ่านเอกสารนี้ขอแนะนำให้คุณอ่านไฟล์ ส่วน I ของสิ่งพิมพ์ดังกล่าวเรียกว่า «แนวทางปฏิบัติที่ดีที่สุดในการสร้าง Shell Script ใน GNU / Linux"

การเขียนสคริปต์เชลล์

ถัดไปขนาดเล็ก ย่อ ความสุขที่สำคัญที่สุด รายการก่อนหน้า:

A) Shebang ในอุดมคติ ควรเขียนดังนี้:

#! / usr / bin / env bash

หมายเหตุ: การแทนที่คำ ทุบตี ตามเปลือกที่คุณเลือก

B) เพื่อให้ได้มาซึ่งความยอดเยี่ยม โหมดทุบอย่างเข้มงวดหรือปลอดภัย (Bash Strict Mode / BSM) เราเสนอทางเลือกต่อไปนี้

B.1) การกำหนดค่าส่วนการดีบัก:

  1. set -o ยกขึ้น
  2. set -o คำนาม
  3. ชุด -o pipefail
  4. # ชุด -o xtrace

อย่างไรก็ตามในรายการใหม่นี้เราขอแนะนำเพื่อลดบรรทัดของโค้ดดังต่อไปนี้ BASH STRICT หรือโหมดปลอดภัย (Bash Strict Mode / BSM):

set -eou pipefail

ด้วยสิ่งนี้ BSM เราบรรลุผลเช่นเดียวกับ 3 บรรทัดก่อนหน้า

คำแนะนำส่วนตัวของฉันคือ: เมื่อสร้างเชลล์สคริปต์ของคุณแล้วให้เพิ่มบรรทัด BSM เพื่อเริ่มการดีบักและทำให้สคริปต์ของคุณสมบูรณ์แบบและทำให้มันทำงานได้ดี เมื่อคุณต้องการเพิ่มกล่าว BSM ตัวเลือก (-NS) เพื่อให้ได้ผลเช่นเดียวกับเมื่อคุณเปิดใช้งานบรรทัด: ชุด -o xtraceในวิธีการข้างต้นนั่นคือบรรทัดของ BSM ควรมีลักษณะดังนี้:

set -eoux pipefail

B.2) การกำหนดค่าส่วนเอาต์พุตของตัวแปรที่กำหนดค่า:

IFS=$'\n\t'

การเพิ่มบรรทัดนี้เราจะดำเนินการกำหนดค่าตัวแปรใหม่ ตัวคั่นฟิลด์ภายใน และบรรลุการแสดงภาพที่ดีขึ้นและ / หรือจับคำ (เขตข้อมูล) ของสตริงอักขระ เปิดใช้งานหรือไม่ตามความต้องการและความต้องการของคุณ

ด้วยการตั้งค่าทั่วไปเหล่านี้:


    #!/bin/bash
    IFS=$' '
    items="a b c"
    for x in $items; do
        echo "$x"
    done

    IFS=$'\n'
    for y in $items; do
        echo "$y"
    done

ผลลัพธ์ของตัวแปรจะได้รับด้วยวิธีต่อไปนี้:


a
b
c
a b c

ด้วยการตั้งค่าเริ่มต้นและแนะนำ:


    #!/bin/bash
    names=(
      "Aaron Maxwell"
      "Wayne Gretzky"
      "David Beckham"
      "Anderson da Silva"
    )

    echo "Con el valor por defecto de la variable IFS..."
    for name in ${names[@]}; do
      echo "$name"
    done

    echo ""
    echo "Con el Modo BSM para el valor de la variable IFS activado..."
    IFS=$'\n\t'
    for name in ${names[@]}; do
      echo "$name"
    done

ผลลัพธ์ของตัวแปรจะได้รับด้วยวิธีต่อไปนี้:


Con el valor por defecto de la variable IFS...
Aaron
Maxwell
Wayne
Gretzky
David
Beckham
Anderson
da
Silva

Con el Modo BSM para el valor de la variable IFS activado...
Aaron Maxwell
Wayne Gretzky
David Beckham
Anderson da Silva

B.3) ส่วนการกำหนดค่าของการกำหนดค่าเริ่มต้นของเทอร์มินัลการดำเนินการ:

setterm --reset

การเพิ่มบรรทัดนี้เราดำเนินการรีเซ็ตเซสชันทั้งหมดและพารามิเตอร์การดำเนินการของเทอร์มินัลที่ใช้ไฟล์ เชลล์สคริปต์ ดำเนินการ เปิดใช้งานหรือไม่ตามความต้องการและความต้องการของคุณ

ด้วยสิ่งนี้เราจะมีไฟล์ BSM มีประโยชน์มากและมีประสิทธิภาพที่ดีเยี่ยม เชลล์สคริปต์.

สุดท้ายเราจะสำรวจสิ่งที่เชลล์สคริปต์ควรมีด้านล่าง:

  • ส่วนข้อมูลเกี่ยวกับผู้สร้างและโปรแกรม:

###########################################################
# SECCIÓN INFORMATIVA SOBRE EL CREADOR Y EL PROGRAMA
###########################################################

###########################################################
#                             MI PAÍS 
#
# NOMBRE: 
# VERSIÓN: 
# TIPO DE PROGRAMA:
# FUNCIÓN:
# NOMBRE CÓDIGO:
# PAÍS ORIGEN:
# CREADO POR:
# EMAIL:
# NOMBRE FACEBOOK:
# PAGINA PERSONAL FACEBOOK:
# COMUNIDAD FACEBOOK:
# TWITTER:
# TELÉFONO:
# PROMOCIONADO POR:
# PAGINA WEB DEL PROYECTO TIC - TAC:
# FECHA DE LANZAMIENTO DE LA PRIMERA VERSIÓN (1.0):
# FECHA DE LANZAMIENTO DE LA VERSIÓN ACTUAL (8.0+0):
# FECHA DE ULTIMA ACTUALIZACIÓN:
###########################################################

  • ส่วนข้อมูลเกี่ยวกับการอนุญาตให้ใช้สิทธิ์ของโปรแกรม:

###########################################################
# SECCIÓN INFORMATIVA SOBRE EL LICENCIAMIENTO DEL PROGRAMA
###########################################################

###########################################################
# NOMBRE DEL SCRIPT DE SHELL
###########################################################
#
# Derechos de autor:
# Copyleft (C) Año - Creador
# 
# Licenciamiento:
#
# El NOMBRE DEL SCRIPT DE SHELL no viene con ninguna garantía. El 
# Autor no se hace responsable si se al aplicarse el S.O., se
# corrompe, daña o inutiliza.
#
# El NOMBRE DEL SCRIPT DE SHELL es una aplicación de Software 
# Libre, por lo tanto usted puede redistribuirlo y / o modificarlo 
# bajo los términos de la Licencia Pública General de GNU
# publicada por la free Software Foundation, o sea, la versión 3
# ó versión posterior, según sea su preferencia.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA, incluso sin la garantía implícita de
# COMERCIALIZACIÓN o IDONEIDAD para un propósito particular.
# Vea la Licencia Publica General para más detalles.
#
# Procure obtener una copia de la Licencia Pública General de GNU
# para estar al tanto sobre lo estipulado por la misma.
#
# Consúltela en:
#
# http://www.gnu.org/licenses/licenses.es.html
# http://www.gnu.org/licenses/license-list.html
# http://www.gnu.org/licenses/gpl-howto.es.html
# http://www.gnu.org/help/evaluation.html
# http://www.gnu.org/licenses/gpl-3.0.html#howto
#
# Más Información:
#
# http://www.creativecommonsvenezuela.org.ve/cc-licencias
# http://creativecommons.org/choose/?lang=es_ES
#
# Por lo tanto, Si usted hace alguna modificación en esta
# aplicación o toma una porción de él, deberá siempre mencionar al
# autor original de la misma:
#
# Desarrollador : 
# Nick          : 
# Twitter       : 
# Facebook      : 
# Telegram      : 
# Canal Telegram:
#
# Este SCRIPT tiene como propósito:
#
# 1.- PROPÓSITO 1: ABCDEFGHIJKLMNÑOPQRSTUVXYZ
#
# 2.- PROPÓSITO 2: ABCDEFGHIJKLMNÑOPQRSTUVXYZ
#
############################################################
# NOMBRE DEL SCRIPT DE SHELL
############################################################

ฉันหวังว่าในส่วนที่สองของไฟล์ "แนวทางปฏิบัติที่ดีที่สุดในการสร้าง Shell Script ใน GNU / Linux" ก็เพียงพอสำหรับพวกเขาที่จะสามารถโฟกัสอย่างละเอียดในทุกแง่มุมเล็ก ๆ น้อย ๆ ของมันและเหตุผลของหลาย ๆ สิ่งเมื่อสร้างไฟล์ เชลล์สคริปต์นั่นคือฉันหวังว่าเคล็ดลับเหล่านี้จะช่วยคุณในเรื่องการทำให้ดีขึ้น เชลล์สคริปต์แต่ไม่มากสำหรับตัวคุณเอง แต่สำหรับคนเหล่านั้น ผู้ใช้ o ผู้ดูแลระบบ คุณต้องจัดการมัน เพื่อที่คุณจะได้ไม่ต้องผ่านไฟล์ งานที่น่าเบื่อและยาก de ค้นหาสิ่งที่พวกเขาเขียนโค้ดอย่างไรและทำไมและทำไมจึงใช้งานไม่ได้อีกต่อไป

จนกว่าจะมีการโพสต์เกี่ยวกับ Shell Scripting!


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา