![bash 스크립트는 입력 단어를 기반으로 Python 스크립트를 시작합니다.](https://linux55.com/image/140972/bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94%20%EC%9E%85%EB%A0%A5%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20Python%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%A9%EB%8B%88%EB%8B%A4..png)
두 개의 Python 스크립트(direct.py 및 nat.py)가 있고 내 입력에 따라 실행할 Python을 선택하는 bash 스크립트를 만들고 싶습니다.
또한 이러한 py 스크립트를 수동으로 실행할 때 입력 옵션(0...8, h 및 q)이 있습니다. "q"를 누르면 sys.exit()가 발생합니다.
예를 들어:
./start.sh and output should be something like:
Chose your mode: (if type nat)
python3 nat.py
이제 Python 스크립트가 표시되고, q를 누르면 bash 선택 옵션이 반환됩니다.
답변1
무한 루프를 설정하고 사용자에게 입력하라는 메시지를 표시합니다. 입력이 옵션 중 하나와 일치하면 (여기서 가장하여) 해당 옵션을 실행합니다. 잘못된 옵션을 입력한 경우 종료하고 싶으면 알려주십시오. 사용자가 해당 Python 스크립트를 종료하면(또는 잘못된 옵션을 입력하면) 옵션을 다시 선택하기 위해 루프로 돌아갑니다.
#!/bin/sh
while :
do
printf 'Choose your mode (nat or direct) or q to quit: '
read REPLY
case $REPLY in
(nat) echo python3 nat.py
;;
(direct) echo python3 direct.py
;;
(q) break
;;
(*) echo Unknown option
;;
esac
done
답변2
당신의 답변에 감사드립니다.
실제로 py 스크립트에서 atexit를 통해 수행했습니다.
def 변경():
하위 프로세스 가져오기
subprocess.call("/home/VPN/vpn.sh", shell=True)
import atexit
atexit.register(변경)
def quit(param):
import sys
sys.exit()
답변3
의 경우 내장된 기능을 bash
고려할 수 있습니다.select
select R in nat direct quit; do [ $REPLY -ge 3 ] && break; echo python3 $R.py; done