![다른 tcsh 스크립트에서 시작된 tcsh 스크립트에서 $_를 어떻게 올바르게 사용합니까?](https://linux55.com/image/82334/%EB%8B%A4%EB%A5%B8%20tcsh%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%8B%9C%EC%9E%91%EB%90%9C%20tcsh%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%24_%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%98%AC%EB%B0%94%EB%A5%B4%EA%B2%8C%20%EC%82%AC%EC%9A%A9%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
나는 다른 tcsh 스크립트 자체에서 비롯된 tcsh 스크립트 내부에서 결과를 검색하려고 합니다 $_
(각각 내부 스크립트와 외부 스크립트라고 부르겠습니다). 그러나 $_
내가 예상한 값(즉, 마지막으로 실행된 명령)이 설정되지 않았습니다.
외부 코드:
#!/usr/bin/tcsh
set lastCmd0 = ($_)
echo "${lastCmd0}"
echo "$0"
source inner
echo "enOuter"
내부 코드:
#!/usr/bin/tcsh
set lastCmd1 = ($_)
echo "${lastCmd1}"
echo "$0"
echo "endInner"
호출 시 출력은 다음과 같습니다 source outer
.
source outer
tcsh
source outer
tcsh
endInner
enOuter
질문 1왜 두 개는 있는데 source outer
두 번째는 없어야 합니까 source inner
?
호출 시 출력은 다음과 같습니다 ./outer
.
./outer
./outer
endInner
enOuter
질문 2내부구매시 왜 $_
설정이 없나요?
스크립트를 실행할 때 $_
절대 설정되지 않는 것 같은데 , 이것이 정상인지는 모르겠습니다. 어쨌든, 그래도 작동하지 않으면 $_
스크립트 내에서 마지막 명령을 실행하는 다른 안전한 방법이 있습니까?
답변1
tcsh
argv()
명령에 매개변수를 제공하고 또는 를 source
변경하지 않은 경우 $0
의 항목을 업데이트할 수 있습니다 $_
.
인쇄되는 변수와 이를 수행하는 스크립트를 표시하도록 메시지를 변경하면 무슨 일이 일어나고 있는지 확인할 수 있습니다. 첫 번째 "외부":
#!/usr/bin/tcsh
set lastCmd0 = ($_)
echo 'O:$lastCmd0'"=${lastCmd0}"
echo 'O:$0'"=$0"
source inner
echo 'O:endOuter'
그 다음은 '내부'
#!/usr/bin/tcsh
set lastCmd1 = ($_)
echo 'I:$lastCmd1='"${lastCmd1}"
echo 'I:$0'"=$0"
echo 'I:endInner'
산출:
> tcsh -f
> source ./outer
O:$lastCmd0=source ./outer
O:$0=tcsh
I:$lastCmd1=source ./outer
I:$0=tcsh
I:endInner
O:endOuter
그리고
> source ./outer first second
#argv: 2
O:$lastCmd0=source ./outer first second
O:$0=tcsh
I:$lastCmd1=source ./outer first second
I:$0=tcsh
I:endInner
O:endOuter