1
다음은 csh
스크립트입니다.csh 스크립트에서 perl을 호출 할 때 변수를 확장하는 방법은 무엇입니까?
#! /bin/csh
set alpha=10\20\30;
set beta = $alpha.alpha;
perl -p -i.bak -e 's/gamma/'$beta'/' tmp;
tmp
파일은 단어 gamma
가 포함되어 있습니다. tmp.csh
을 실행 한 후에는 tmp에 10\20\30.alpha
이 올 것으로 예상되지만 지금은 102030.alpha
입니다.
이 상황에서 슬래시를 유지하는 방법은 무엇입니까?
참고 : 알파 변수의 정의를 변경하는 것을 선호하지 않습니다. 스크립트에서이 형식 (10 \ 20 \ 30) 만 사용해야하는 경우에 사용됩니다.
감사합니다.
안녕하세요,이 작동하지만 '알파'에 슬래시를 넣으면 어떻게 될까요? 그러면 또 다른 오류가 발생합니다. – user13107
'\ 2'또는 '\ 3'의 제어 문자 또는 '\'다음에 '2'또는 '3'의 시퀀스를 사용 하시겠습니까? 전자의 경우에는 알파의 백 슬래시를 이스케이프 처리 (역 슬래시)해야합니다. 'set alpha = "10 \\ 20 \\ 30";' –
슬래시 케이스 대신 다른 대안을 찾았습니다. 's/gamma /'$ beta '/'대신 '@ gamma @'$ beta '@'를 사용합니다. 이렇게하면 대체 연산자 구분 기호와 $ beta의 슬래시를 혼동하지 않습니다. 어쨌든 당신의 도움에 감사드립니다. – user13107