GNU / Linuxでシェルスクリプトを作成するためのベストプラクティス-パート2

まず、この出版物を読む前に、 パートI と呼ばれる上記の出版物の «GNU / Linuxでシェルスクリプトを作成するためのベストプラクティス"

シェルスクリプト

次に、小さな 要約 最も重要な幸福の 前のエントリ:

A)理想的なシバン 次のように書く必要があります。

#!/ usr / bin / envbash。

注意: 単語を置き換える bash お好みのシェルで。

B) 優れたを達成するために STRICTまたはSAFEBASH MODE(Bash Strict Mode / BSM)では、次の選択肢を提供しています。

B.1)デバッグセクションの構成:

  1. set -o レイズ
  2. set -o 名詞セット
  3. set -o パイプ失敗
  4. #set -o xtrace

ただし、この新しいエントリでは、コード行を最小限に抑えるために次のことをお勧めします。 BASHSTRICTまたはSAFEMODE(BashStrictモード/ BSM):

set -eou pipefail

これに BSM 前の3行とまったく同じように達成します。

私の個人的な推奨事項は次のとおりです。 シェルスクリプトが作成されたら、BSM行を追加して、スクリプトのデバッグと完成を開始し、スクリプトを高機能にします。 必要に応じて、 BSM オプション (-バツ) ラインを有効にしたときと同じ効果を達成するには: set -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
############################################################

私はこの第XNUMX部で 「GNU / Linuxでシェルスクリプトを作成するためのベストプラクティス」 彼らがそれを作成するときにそれのすべての小さな側面と多くの理由に完全に集中することができるのに十分です シェルスクリプトつまり、これらのヒントのいくつかが、より良いものにするために役立つことを願っています シェルスクリプト、しかしあなた自身のためではなく、それらのために ユーザー o システム管理者 あなたはそれらを管理する必要があります。 あなたが通過する必要がないように 退屈で難しい作業 de 彼らがコーディングしたもの、その方法と理由、そしてなぜそれが機能しなくなったのかを調べてください。

シェルスクリプトに関する次の投稿まで!


コメントを最初に

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。