현재 작업 디렉토리의 파일 이름 일부를 자르려고합니다. 이것은 내가 사용하는 코드입니다.
set test = "$cwd" | awk -F "/" '{print $3}'
set USER_CUST = ${test:s/abc_//}
(설명 : 루트에서 세 번째 폴더의 "abc_"부분을 잘라 내고 싶습니다.)
스크립트 (script_check.csh)를 실행할 때 콘솔에 다음이 표시됩니다.
tcsh -x script_check.csh
set test = /proj/proj_name/abc_username/folder/sub_folder
awk -F / {print $3}
test: Undefined variable.
테스트가 정의되지 않은 변수 인 이유는 무엇입니까? 다른 가능한 해결 방법이 있습니까?
변수 선언의 오른쪽 뒷부분은 셸 명령이 아니므로 파이프를 사용할 수 없습니다. 다음과 같이 볼 수 있습니다.
$ set test = ls
$ echo $test
ls
혼란스러운 "정의되지 않은 변수"오류가 발생하는 이유는 무엇입니까? 누가 알아. (t) csh 파서는 기발하고 특히 잘못된 입력이 주어질 때 이와 같은 이상한 것들로 가득 차 있습니다. (t) csh의 스크립팅이 일반적으로 권장되지 않는 주된 이유 중 하나입니다 (누군가 의견에서 지적했듯이) ;-)
쉘 명령으로 만들려면 다음과 같이 백틱을 추가하십시오.
$ set test = `echo "$cwd" | awk -F "/" '{print $3}'`
$ echo $test
martin
그건 pwd
그렇고 이것을 조금 더 짧게 만들 수 있습니다 .
$ set test = `pwd | awk -F "/" '{print $2}'`
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다