Escrevendo script de bash do Linux

0

Eu tenho script bash

#!/bin/sh

export DEBIAN_FRONTEND=noninteractive;

apt-get update;
apt-get -y upgrade;

apt-get install -y python-pip python-dev nginx;

##After the command output shows visible commands after + sign in bash
set -x -e 

pip install virtualenv;
virtualenv /home/user/virtualenv;
source /home/user/virtualenv/bin/activate;

pip install gunicorn;

systemctl start gunicorn;
systemctl restart nginx;

A saída do comando mostra como

+ virtualenv /home/user/virtualenv
New python executable in /home/user/virtualenv/bin/python
Installing setuptools, pip, wheel...done.
+ source /home/user/virtualenv/bin/activate
++ deactivate nondestructive
++ unset -f pydoc
++ '[' -z '' ']'
++ '[' -z '' ']'
++ '[' -n /bin/bash ']'
++ hash -r
++ '[' -z '' ']'
++ unset VIRTUAL_ENV
++ '[' '!' nondestructive = nondestructive ']'
++ VIRTUAL_ENV=/home/user/virtualenv
++ export VIRTUAL_ENV
++ _OLD_VIRTUAL_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
++ PATH=/var/www/html/askbotenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
++ export PATH
++ '[' -z '' ']'
++ '[' -z '' ']'
++ _OLD_VIRTUAL_PS1=
++ '[' x '!=' x ']'
+++ basename /home/user/virtualenv
++ PS1='(askbotenv) '
++ export PS1
++ alias pydoc
++ '[' -n /bin/bash ']'
++ hash -r
+ pip install gunicorn
Collecting gunicorn

Desejo remover esses + antes do comando devido a set -x -e

    
por Gopal Raha 29.01.2017 / 17:44

1 resposta

2

O comando set -x -e ativará o rastreio com -x (isso é o que produz os + prompts na saída) e também fará o script sair diretamente se algo der errado com o -e .

Tendo o script sair diretamente em um erro, ainda assim será uma boa ideia, então sugiro alterar a linha para dizer apenas

set -e

Como alternativa, como o rastreamento é enviado para o fluxo de erro padrão, você pode redirecioná-lo para /dev/null ao executar o script:

$ ./myscript 2>/dev/null

... mas isso também descartaria qualquer outra mensagem de diagnóstico que você realmente queira ver.

    
por 29.01.2017 / 18:26