在GNU / Linux中创建Shell脚本的最佳实践-第2部分

首先,建议您阅读本出版物之前, 第一部分 该出版物的 «在GNU / Linux中创建Shell脚本的最佳实践«。

Shell脚本

接下来,小 总结 最重要的幸福 上一个条目:

A)理想的社bang 它应写为:

#!/ usr / bin / env bash。

注意: 替换单词 打坏 由您选择的外壳。

B) 达到卓越 严格或安全重击模式(严格重击模式/ BSM),我们提供以下替代方案:

B.1)调试部分的配置:

  1. 设置-o errexit
  2. set -o名词集
  3. 设置-o pipefail
  4. #设置-o xtrace

但是,在此新条目中,我们建议为了减少代码行,以下内容 严格限制或安全模式(严格限制模式/ BSM):

set -eou pipefail

有了这个 BSM 我们获得的效果与前3行完全相同。

我个人的建议是: 构建Shell脚本后,添加BSM行以开始调试和完善您的脚本并使其功能强大。 必要时添加说 BSM 选项 (-X) 达到与启用该行相同的效果: 设置-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

添加此行后,我们将完全重置整个会话和终端的执行参数,其中使用 Shell脚本 被执行。 根据您的要求和需要启用或禁用。

有了这个,我们将有一个 BSM 非常有用和高效 Shell脚本.

最后,我们将在下面探索Shell脚本应具有的内容:

  • 关于创作者和程序的内容丰富的部分:

###########################################################
# 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
############################################################

我希望第二部分 “在GNU / Linux中创建Shell脚本的最佳实践” 足以让他们能够专注于它的每个小方面,以及创建一个 Shell脚本也就是说,我希望这些技巧中的一些技巧对您有所帮助 Shell脚本,但对您而言并没有那么多,对于那些 用户 o 系统管理员 您必须管理它们。 这样您就不必经历一个 繁琐而艰巨的任务 de 找出他们编码的内容,方式和原因,以及为何不再起作用。

直到有关Shell脚本的下一篇文章!


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。