Connect with us

Linux

Shell Script inserisce commenti su più righe in Bash/KSH


io vorrei usare commenti multilinea sotto lo script di shell. Sotto C/C++ posso usare il seguente formato:
/*
il mio codice c
commento # 2
bla
foo bar
….
*/

Come inserisco un commento su più righe sotto uno script di shell? Puoi dire al metodo per impostare i commenti dello script della shell multilinea? Come si commentano più righe nello script della shell?

In bash shell, possiamo commentare più righe usando vari metodi. Vediamo come inserire commenti su più righe nello script di shell in esecuzione su sistemi Linux o Unix-like.

Dettagli tutorial
Livello di difficoltà Facile
Privilegi di root No
Requisiti Nessuno
Est. momento della lettura 2 minuti

Commenti di script di shell multilinea vs. commento a riga singola

Per impostazione predefinita, lo script della shell può essere commentato come prefisso # personaggio, ad esempio:
# my comment goes here

Script di shell Bash Inserisci la sintassi del commento su più righe

Per i commenti su più righe utilizzare la seguente sintassi:

#!/usr/bin/env bash
# my comment  1
# my comment  2
# my comment  N

Commento multilinea nello script di shell utilizzando il DOCUMENTO HERE

Tuttavia, puoi utilizzare la funzione HERE DOCUMENT come segue:

#!/bin/bash
echo "Say Something"
<<COMMENT1
    your comment 1
    comment 2
    blah
COMMENT1
echo "Do something else"

Questo tipo di reindirizzamento dice alla shell di leggere l’input dalla sorgente corrente (HERE) finché non viene visualizzata una riga contenente solo la parola (HERE). La parola HERE non è soggetta a nome di variabile, espansione di parametro, espansione aritmetica, espansione di percorso o sostituzione di comando. Tutte le righe lette fino a quel punto vengono quindi utilizzate come input standard per un comando. I file elaborati in questo modo sono comunemente chiamati qui documenti. Se non si desidera il nome della variabile, l’espansione del parametro, l’espansione aritmetica, l’espansione del percorso o la citazione di sostituzione del comando QUI (COMMENTI) in una singola virgoletta:

<<'COMMENTS'
text1
text2
testN
$varName
COMMENTS

Esempio di blocco di commenti Bash

È importante inserire EOF tra virgolette (EOF) per evitare l’esecuzione e la formulazione di comandi. Ecco i commenti di blocco in un esempio di script di shell:

#!/usr/bin/env bash
echo "*** Before comment block ***"
: <<'EOF'
CODE block starts
CODE block ends here
EOF
echo "*** After comments block ***"

Scrivere commenti su più righe negli script Bash

Commenti allo script di shell multilinea

Un’altra opzione come sottolineato da Ikram nella sezione commenti qui sotto:

#!/bin/bash
foo=bar
: '
This is a test comment
Author foo bar
Released under GNU 
'
 
echo "Init..."
# rest of script

Si prega di notare che il : è un comando integrato nella shell. Dalla pagina man di bash(1):

: [arguments]
Nessun effetto; il comando non fa altro che espandere gli argomenti
ed eseguendo eventuali reindirizzamenti specificati. Un codice di uscita zero è
restituito.

Quindi la sintassi è:

Solo guide per i sostenitori di Patreon ????

  • Nessuna pubblicità e tracciamento
  • Guide approfondite per sviluppatori e amministratori di sistema su Opensourceflare✨
  • Unisciti al mio Patreon per supportare i creatori di contenuti indipendenti e iniziare a leggere le ultime guide:

Aderire Patreon ?

Comando null utilizzato nello script della shell per inserire più commenti. Il ‘:‘ non ha effetto. In altre parole, il comando non fa nulla ed esce sempre con codice di successo.

Esempi

#!/bin/bash
#
# example about calling this stackscript
# Multi-line comment
<<COMMENT1
_BOX="linode-nixcraft-03"
_BOX_VLAN="172.0.0.100/24"
linode-cli linodes create 
--type g6-standard-2 
--image linode/ubuntu20.04 
--region us-southeast 
--root_pass 'ROOT_PASS_HERE' 
--authorized_keys 'ssh-ed25519 SSH_PUB_KEY_HERE vivek@nixcraft' 
--booted true 
--backups_enabled true 
--private_ip true 
--interfaces.label "" 
--interfaces.purpose public 
--interfaces.ipam_address "" 
--interfaces.label vlan003 
--interfaces.ipam_address "${_BOX_VLAN}" 
--interfaces.purpose vlan 
--stackscript_id 874407 
--stackscript_data "{"_BOX_NAME": "${_BOX}"}" 
--label "${_BOX}"
COMMENT1
 
# Main script starts below
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>/root/StackScript.log 2>&1
 
## SET ME for each server using the cli but some values are static ##
_hostname="" # get from the cli
_admin_pub_in="eth0"
_admin_vlan_in="eth1"
_admin_vlan_in_cidr="172.0.0.0/24"
_linode_nb_cidr="192.168.255.0/24"
_my_admin_pub_ip="$(hostname -I | awk '{ print $1}')"
_my_admin_pvt_ip="$(hostname -I | awk '{ print $2}')"
_my_admin_vlan_ip="$(hostname -I | awk '{ print $3}')"
 
# rest of the script below
# ....
# ..
# ......

Conclusione

Sarebbe meglio se documentassi il tuo script e scrivessi commenti considerati una best practice. Altri amministratori di sistema e sviluppatori potrebbero utilizzare i commenti per comprendere i tuoi script. Come spiegato in precedenza, qualsiasi cosa viene scritta dopo # e fino alla fine della riga non sono altro che commenti.

Hai imparato a conoscere le possibilità di commenti di script di shell su più righe. Tuttavia, le shell non offrono una sintassi di commento su più righe. Quindi, abbiamo imparato e usato varie tecniche come here-documents per fare “commenti” multilinea sotto Linux o sistemi simili a Unix.


ANNUNCIO



Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Click to comment

Leave a Reply

Esegui l'accesso per Commentare.

Di tendenza

Close Popup
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Close Popup
Privacy Settings saved!
Impostazioni

Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.

Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.

Cookie tecnici
Per utilizzare questo sito web usiamo i seguenti cookie tecnici necessari:
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • swpm_session

Google Adsense
Usiamo la pubblicità di Google solo per mantenere attivi i nostro sito. Con ip anonimizzati.

Rifiuta tutti i Servizi
Save
Accetta tutti i Servizi