Sto rivedendo le migliori pratiche con le dichiarazioni if . Sotto nell'esempio A includo l'intero codice da eseguire e assicuriamo che rimanga all'interno dell'istruzione if . Mentre per esempio B il codice da eseguire risiede al di fuori dell'istruzione if .
Dalla mia comprensione di Best practice su if / return , esempio A sembra essere la migliore pratica.
Esempio A
#!/bin/bash
if [ 'whoami' != 'root' ]
then
echo "MUST be ROOT!"
exit
else
ifconfig -a | sed 's/[ \t].*//;/^\(lo:\|\)$/d'
read -p "Enter interface: " int
mac=$(macchanger $int | grep 'Permanent MAC:' | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
ifconfig $int down
iwconfig $int mode manage
macchanger $int $mac
ifconfig $int up
echo "$int in stock configuration with MAC: $mac"
echo "Connect to a Wi-Fi network and run 'ping 1.1.1.1'"
sleep 2 && cinnamon-settings network &
fi
Esempio B
#!/bin/bash
if [ 'whoami' != 'root' ]
then
echo "MUST be ROOT!"
exit
fi
ifconfig -a | sed 's/[ \t].*//;/^\(lo:\|\)$/d'
read -p "Enter interface: " int
mac=$(macchanger $int | grep 'Permanent MAC:' | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
ifconfig $int down
iwconfig $int mode manage
macchanger $int $mac
ifconfig $int up
echo "$int in stock configuration with MAC: $mac"
echo "Connect to a Wi-Fi network and run 'ping 1.1.1.1'"
sleep 2 && cinnamon-settings network &
Posso prevedere un potenziale esempio C, che includerebbe la struttura:
if [ 'whoami' != 'root' ]
then
echo "MUST be ROOT!"
exit
if [whoami' == 'root' ]
then
...
fi
Tuttavia, sembra come creare una condizione extra non necessaria, che utilizza risorse aggiuntive. Quindi, ignorerò l'esempio C.