쉘 파일의 명령 프롬프트를 종료하는 방법은 무엇입니까?
쉘 파일에는 다음이 포함됩니다.
if(); then
// some unix code here
else
// want to exit from cmd prompt or Kill current cmd prompt
fi
@it 아는 사람 있어?
답변1
스크립트에 의해 생성된 대화형 셸을 종료하고 싶다는 뜻이라고 가정합니다. 나는 또한 쉘이 bash
.
해당 셸에서 스크립트를 가져오는 경우 를 사용하세요 exit
. 그렇지 않으면 SIGABRT
다음을 사용하여 상위 pid(대화형 셸)로 전송(또는 bash를 종료시키는 다른 신호)하세요.
kill -ABRT "$PPID"
또는 다음이 없는 셸에서 $PPID
(Linux에만 해당):
read -r _ _ _ ppid _ < "/proc/$$/stat"
kill -ABRT "$ppid"
답변2
좋다크리스 탕, 나는 당신이 GNU bash를 사용하고 있다고 가정합니다. 다른 쉘은 다를 수 있지만 일반적인 아이디어는 동일해야 합니다.
Bash에서 환경 변수에는 $$
현재 실행 중인 프로세스의 프로세스 ID와 $PPID
실행 중인 상위 프로세스의 프로세스 ID가 포함됩니다. Chris가 예제를 제시한 것처럼 더 올라갈 수 있지만 /proc는 Linux에만 해당됩니다.
다음과 같은 구조를 사용하여 사용자에게 로그아웃할지 물어볼 수 있습니다.
echo "Do you want to exit? (type YES or NO, then Enter)"
read answer
if test "${answer}" = "YES"; then
# insert process killing magic
fi
# we only get here if the user did not answer "YES"
가능하다면 GNU를 사용하여 dialog
문제를 좀 더 예쁘게 만들 수 있습니다. 이 경우 위의 전체 코드 조각을 다음으로 바꾸세요.
if dialog --yesno "Do you want to exit?" 10 50; then
# insert process killing magic
fi
# we only get here if the user did not answer "YES"
이 숫자는 10 50
대화 상자의 크기(각각 행과 열)를 지정합니다.
process killing magic
이것 처럼 간단 할 수도 있습니다 kill $PPID
.