AAA <options>; CCC AAA <options>
AAA
, CCC
다른 명령입니다.
여기 zsh 스크립트가 있습니다. 예를 들면 다음과 같습니다.
vi script.zsh
<...>
AAA <options>; CCC AAA <options>
<...>
세부 사항: 내가 틀렸다면 CCC AAA <options>
정정 AAA <options>
하십시오. 하위 쉘이 사용된 다음 현재 쉘에서 별도의 프로세스가 생성되거나 현재 쉘이 사용되고 프로세스에서 하위 프로세스가 생성될 수 있습니다. 현재 스크립트를 실행 중입니다.
문제는 완성 CCC
후에도 살아남는다 는 점이다. script.zsh
이로 인해 반환 값 대신 결과를 호출하려고 할 때 문제가 발생합니다. (완료된 후에 무언가를 생성합니다. ie에 대해 새로 생성된 객체입니다. CCC AAA <options>
)AAA <options>
~에 script.zsh
not found
경고를 발생시킵니다 .
그런데 script.zsh
현재 결과를 어떻게 볼 수 있습니까 'AAA <options>'
?
가능하다면 Z 쉘을 목표로 삼으세요.
편집: 다음과 같아야 합니다.
AAA <options>; CCC AAA <options>
답변1
아니요,
CCC 'AAA <options>'
CCC
리터럴 매개변수로 시작합니다 AAA <options>
. 모든 껍질은 동일합니다. echo
대신 다음 명령을 사용할 수 있습니다 CCC
.
$ echo 'AAA <options>'
AAA <options>
CCC
출력(후행 개행 없이)을 AAA
단일 인수 로 호출 하려면 다음을 수행할 수 있습니다.
CCC "$(AAA <options>)"
CCC
출력에 가능한 한 많은 단어(공백, 탭, 줄 바꿈, NUL 구분 기호)를 사용하여 호출 하려면 AAA
다음을 수행할 수 있습니다.
CCC $(AAA <options>)
그럼에도 불구하고 return CCC
전에는 시작되지 않으며 AAA
스크립트는 CCC
return 전에 종료되지 않습니다.
명령이 반환되기 전에 스크립트를 종료하려면 다음과 같이 명령을 비동기적으로 시작해야 합니다.
CCC args &
어쨌든 이것은 모든 쉘에서 동일하며 zsh
구체적이지 않습니다(위의 NUL 분할을 제외하고).