Linux csh 스크립트에서 $_ 값을 재정의하고 싶습니다.
cmdline을 사용하여 xterm에서 이 스크립트를 실행합니다.
chmod +x test.csh
test.csh
Test.csh 내용:
#!/usr/bin/tcsh
....
source sourceme.rc
....
sourceme.rc 내용:
...
set cmd = "import sys; import os; print os.path.abspath(os.path.join(os.path.dirname(sys.argv[2]),'checkenv.py'))"
set checkenv = `python -c "$cmd" $_`
...
sourceme.rc의 $_ 값은 "소스소스me.rc" 만약에"소스소스me.rc"xterm에서 직접 실행됩니다.
하지만, 그소스소스me.rcxterm을 사용하는 대신 csh 스크립트를 사용하여 실행하여 직접 가져오므로 $_ 값이 비어 있습니다.
나는 보았다여기$_는 변경되지 않았지만 test.csh에서 $_의 값을 덮어쓸 수 있는 방법이 있습니까? 예를 들어
set_ = 일부 값
sourceme.rc의 내용을 편집하고 싶지 않다는 점을 고려하면
감사해요
답변1
넌 이걸 할 수 없을 거야매우 좋은.
에서는 입력 버퍼(비대화형 쉘에서는 비어 있음)의 내용을 항상 가져오며 덮어쓸 수 없습니다 tcsh
.$_
이 패치워크는 작동할 수 있습니다(ymmv).
set lastline = 'source sourceme.csh'
sed 's/\$_\>/$lastline/g' sourceme.csh | source /dev/stdin
bash
dash
, 등과 달리 tcsh
외부 명령이 아닌 경우 파이프의 오른쪽은 현재 프로세스에서 실행되므로 의 모든 명령이나 변수 할당은 sourceme.csh
기본 셸에서 발생합니다.