에서 man bash
아래 조건식 :
-t fd
True if file descriptor fd is open and refers to a terminal.
fd 1이 표준이라고 가정하면 if [ -t 1 ]; then
효과가 있습니다. 고급 쉘 스크립팅 가이드의 주장 -t
이 방법을 사용이 끝난 실패 ssh
하고 테스트하는 것이 (표준 입력을 사용하지 표준 출력)을 따라서해야한다 :
if [[ -t 0 || -p /dev/stdin ]]
-p
파일이 존재하고 명명 된 파이프인지 테스트합니다. 그러나 경험적으로 이것은 나에게 해당되지 않습니다. -p /dev/stdin
일반 터미널과 ssh 세션 모두에서 실패하지만 두 경우 모두에서 작동합니다 if [ -t 0 ]
(또는 고급 쉘 스크립팅 안내서-t 1
의 해당 섹션에서 문제에 대한 아래 Gilles 의견 참조 ).
주요한 문제가 해당 컨텍스트에 적합한 방식으로 동작하도록 스크립트를 호출하려는 특수한 컨텍스트 인 경우 래퍼 및 사용자 정의 변수를 사용하여 이러한 모든 기술을 회피하고 약간의 소란을 피할 수 있습니다.
!#/bin/bash
export SPECIAL_CONTEXT=1
/path/to/real/script.sh
이것을 호출 live_script.sh
하거나 대신 두 번 클릭하십시오. 물론 명령 줄 인수를 사용하여 동일한 작업을 수행 할 수 있지만 GUI 파일 브라우저에서 작업을 수행하고 클릭하려면 래퍼가 여전히 필요합니다.