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

...하지만 실제로 보고 싶은 다른 진단 메시지도 삭제됩니다.

관련 정보