verificação de sintaxe de script BASH, execução de faixa?

1

Como um novato (Debian) Linux eu queria saber se existe uma maneira de controlar a execução de um script bash shell (.sh)? Como no Windows, você aciona isso com um comando echo on em um arquivo em lote.

Meu primeiro script 'unix', mas estou pensando se ele será executado como esperado:

#!/bin/bash  
# switch maintenance mode off and go live with your ownCloud  
occpath='/var/www/owncloud'  
htuser='www-data'  
alias occ-do=sudo -u $htuser php $occpath/occ  
echo info: Switching to live-mode ..  
occ-do maintenance:mode --on'  

a linha que estou tentando criar é como sudo -u www-data php /var/www/owncloud/occ (occ é o que deve ser executado, vamos supor que eu não precise de um caminho para a parte php ).

Isso funcionará? algum erro na sintaxe? E não vamos esquecer a minha pergunta sobre a execução seguinte ..

    
por Supr 16.03.2016 / 22:14

3 respostas

1

Existe uma maneira de rastrear a execução de um script bash shell (.sh)?

Você pode usar set -x , set +x e set -v conforme descrito abaixo.

  • set -x : Exibe comandos e seus argumentos conforme são executados.
  • set +x : desativar a depuração
  • set -v : exibe as linhas de entrada do shell à medida que são lidas.

HowTo: Depurar um script de shell no Linux ou UNIX

1. Use -x option to debug a shell script

Run a shell script with -x option.

$ bash -x script-name
$ bash -x domains.sh

2. Use of set builtin command

Bash shell offers debugging options which can be turn on or off using set command.

  • set -x : Display commands and their arguments as they are executed.
  • set -v : Display shell input lines as they are read.

You can use above two commands in shell script itself:

#!/bin/bash
clear
# turn on debug mode
set -x
for f in *
do
   file $f
done
# turn OFF debug mode
set +x
ls
# more commands

You can replace the standard Shebang line:

#!/bin/bash

with the following (for debugging) code:

#!/bin/bash -xv

Source HowTo: Depurar um script de shell no Linux ou UNIX

Leitura Adicional

por 16.03.2016 / 22:27
0

Coloque

set -x

no ponto em que você deseja que as informações de depuração comecem a ser exibidas e

set +x

onde você quer. Eu não prometo que o que você vê sempre será simples, mas você pode se acostumar com ele depois de um tempo.

    
por 16.03.2016 / 22:19
0

Esta é a maneira simples de verificar a sintaxe dos seus scripts de shell:

https://www.shellcheck.net/

Aqui neste site, o verificador de sintaxe on-line marca a linha & exibe o erro que é causado devido a sintaxe incorreta

De acordo com a sugestão de outras respostas, você pode tentar set -x & set +x para ativar & desativar o modo de depuração, respectivamente, para rastrear a execução do script.

    
por 24.10.2018 / 11:51