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
...しかし、実際に見たい他の診断メッセージも削除されます。