Linux Bashスクリプトの作成

Linux Bashスクリプトの作成

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;

コマンドの出力は以下の通りです。

+ 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

+コマンドの前にそのフラグを削除したいです。set -x -e

答え1

このset -x -eコマンドはトレースを有効にします-x(これが+出力にプロンプ​​トが生成される理由です)-e

それでもエラーが発生したときにスクリプトを終了させることをお勧めします。したがって、行を次のように変更することをお勧めします。

set -e

または、トレース出力が標準エラーストリームに移動するため、/dev/null次にリダイレクトできます。

$ ./myscript 2>/dev/null

...しかし、実際に見たい他の診断メッセージも削除されます。

関連情報