bash 스크립트는 입력 단어를 기반으로 Python 스크립트를 시작합니다.

bash 스크립트는 입력 단어를 기반으로 Python 스크립트를 시작합니다.

두 개의 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

관련 정보