다음과 같이 별칭 을 "가져오기/실행"할 수 없습니다 tcsh
.
alias inp1 "grep -i "final_model" /scr/cb2TempProd/tmp/$USER/\!:1/Simulation/Input/assemble.preprocessing | sed 's#.*<##; s/>$//'"
여기서
\!:1
= 수동 입력예상 출력 =
/scr/cb2TempProd/tmp/$USER/test/Simulation/Input/X1_X_XXXX_XXXXXX15X_H10EK011.inp
원하는 출력에 추가 별칭(미리 정의됨)을 사용하겠습니다 =
alias inp2 "gdyn `grep -i "final_model" /scr/cb2TempProd/tmp/$USER/\!:1/Simulation/Input/assemble.preprocessing | sed 's#.*<##; s/>$//'`"
- 첫 번째 문제 = 호환되지 않는 변수 오류 수정(별칭 파일도 가져오기)
- 두 번째 질문 = 단일 별칭에 두 개의 출력을 가질 수 있습니까?
답변1
, csh
변수 대체언제나큰따옴표 안에 표시되며 백슬래시로 차단할 수 없습니다.
% echo "$"
Illegal variable name.
% echo "\$"
Variable name must contain alphanumeric characters.
% echo "\\$"
Variable name must contain alphanumeric characters.
% echo \$
$
이는 Bourne 쉘과 다르며 다음 문서에 설명되어 있습니다.맨페이지[1]:
입력 줄의 별칭을 지정하고 구문 분석한 후
$
각 명령이 실행되기 전에 문자로 입력된 변수 대체가 수행됩니다. 이 확장은 앞에$
Except를 사용 하여 방지할 수 있습니다.\
"
항상 나타나는 큰따옴표( ) 안에, 작은따옴표('
) 안에는 표시되지 않습니다. 역따옴표( )로 묶인 문자열은` `
나중에 해석되므로(아래 명령 대체 참조)$
나중에까지 대체가 발생하지 않습니다(전혀 발생하지 않는 경우). A$
뒤에 공백, 탭 또는 줄 끝이 오면 변경되지 않은 채 전달됩니다.
아마도 별칭을 지정하는 가장 쉬운 방법은 앞/뒤에 큰따옴표를 시작/중지하는 것입니다 \$
.
alias inp1 "grep -i 'final_model' /scr/cb2TempProd/tmp/$USER/\!:1/Simulation/Input/assemble.preprocessing | sed 's#.*<##; s/>"\$"//'"
inp1
두 번째 별칭의 경우 다음 위치에 붙여넣는 대신 간단히 재사용해야 한다고 생각합니다 .
alias inp2 'gdyn `inp1 \!:1`'
[1] 이것은 의 맨페이지이지만 csh
참조 및 대체 항목은 에서 확실히 유사합니다 tcsh
.