저는 GNOME 터미널 3.36.2와 함께 Ubuntu 20.04LTS를 사용하고 있습니다. 두 개의 명령을 실행하고 첫 번째 명령이 성공한 경우에만 두 번째 명령을 실행하고 싶습니다.
proc.sh && results.sh
별도의 터미널 창에서 실행하고 싶어서 다음과 같이 말했습니다.
gnome-terminal -e 'proc.sh && results.sh'
이것은 작동합니다. 하지만 -e
을 사용해야 한다는 더 이상 사용되지 않는 경고가 표시됩니다 --
. 그러나 둘 다 -x
(더 이상 사용되지 않음) 및 --
모두 동일하며 참조된 텍스트의 전체 내용을 실행 파일 이름으로 해석하므로 "파일을 찾을 수 없습니다" 오류가 발생합니다.
그렇다면 지금 이 작업을 수행하는 올바른 방법은 무엇입니까?
답변1
매뉴얼에 힌트가 있습니다:
--command
,-e=COMMAND
이 옵션에 대한 인수를 쉘과 동일한 방식으로 프로그램과 인수로 분할하고 결과 명령줄을 터미널 내에서 실행합니다.이 옵션은 더 이상 사용되지 않습니다. 대신
--
옵션을 종료하고 그 뒤에 실행되는 프로그램과 인수를 넣으십시오. 예를 들어 를 사용하는 대신gnome-terminal -e "python3 -q"
을 사용하는 것을 선호합니다gnome-terminal -- python3 -q
.쉘을 통해 실행되지 않는다는 점에 유의하십시오
COMMAND
. 단어로 분할되어 프로그램으로 실행됩니다.쉘 구문이 필요한 경우 형식을 사용하십시오gnome-terminal -- sh -c '...'
.
(원천, 강조 내)
실행하려는 명령은 &&
쉘 구문에 속합니다. 이를 처리하려면 쉘이 필요합니다. 그래서:
gnome-terminal -- sh -c 'proc.sh && results.sh'